#python #email #join #smtplib
#python #Адрес электронной почты #Присоединиться #smtplib
Вопрос:
import smtplib
from email.message import EmailMessage
list1=[
'Person 1 <email1@outlook.com>',
'Person 2 <email2@gmail.com>'
]
list2=[
'Person 3 <email3@yahoo.com>',
'Person 4 <email4@hotmail.com>'
]
masterlist = [list1, list2]
for x in masterlist:
receivers = ", ".join(x)
msg = EmailMessage()
msg['Subject'] = 'This is a Test Email'
msg['From'] = 'Person 5 <email5@outlook.com>'
msg['To'] = receivers
msg.set_content('Ignore this message')
with smtplib.SMTP('smtp.outlook.com', 587) as smtp:
smtp.send_message(msg)
Это код, который я использовал.Я хотел бы отправить это электронное письмо определенным группам, но не объединять все электронные письма в одно электронное письмо. То, как у меня сейчас, заканчивается отправкой электронного письма только в последний список электронных писем. Как я должен изменить это, чтобы иметь возможность отправлять его в несколько списков электронных писем?
Комментарии:
1.
receivers = list1 list2
2. У меня была опечатка в моем сообщении. Я пытался отправить электронное письмо в каждый список отдельно. Я считаю, что, сделав
receivers = list1 list2
, я в конечном итоге отправляю электронное письмо всем людям в одном электронном письме.
Ответ №1:
Вы передаете только последний список электронных писем msg['To']
, потому что программа перезаписывает предыдущие назначения lst с последним элементом в lst. Итак, почему вы хотите просто объединить два списка, чтобы отправить электронное письмо всем?
#masterlist = [list1, list2]
#for x in masterlist:
#receivers = ", ".join(x)
# The .join() function doesn't do much in this situation because your lists are already separated by commas.
msg = EmailMessage()
msg['Subject'] = 'This is a Test Email'
msg['From'] = 'Person 5 <email5@outlook.com>'
msg['To'] = list1 list2 # or use .extend() function the same is accomplished
msg.set_content('Ignore this message')
Итак, просто избавьтесь от masterlist
переменной и for
цикла.
Комментарии:
1. Извините, в моем исходном сообщении была опечатка. Я хочу, чтобы это отправляло два отдельных электронных письма, по одному для каждого списка электронных писем.
list1 list2
отправляет электронное письмо всем сторонам.
Ответ №2:
import smtplib
from email.message import EmailMessage
list1=[
'Person 1 <email1@outlook.com>',
'Person 2 <email2@gmail.com>'
]
list2=[
'Person 3 <email3@yahoo.com>',
'Person 4 <email4@hotmail.com>'
]
masterlist = [list1, list2]
for x in masterlist:
msg = EmailMessage()
msg['Subject'] = 'This is a Test Email'
msg['From'] = 'Person 5 <email5@outlook.com>'
msg['To'] = x
msg.set_content('Ignore this message')
with smtplib.SMTP('smtp.outlook.com', 587) as smtp:
smtp.send_message(msg)
Я смог исправить это, создав раздел электронной почты в цикле for на основе списка электронных писем.