Электронная почта Python - может отправлять почту только на один адрес

Моя функция SendMail выглядит так:

MY_SMTP = #I can't show it here

def SendMail(authentication_data, email_from, email_to_list, email_cc_list, email_subject, email_message, list_file)
    user_name = authentication_data["name"]
    user_password = authentication_data["password"]
    msg = MIMEMultipart(email_message)
    server = smtplib.SMTP(MY_SMTP)
    server.starttls()
    emails_list_string = ", ".join(email_to_list)
    emails_cc_list_string = ", ".join(email_cc_list)

    msg["From"] = email_from
    msg["To"] = emails_list_string
    msg["Cc"] = emails_cc_list_string
    msg["Subject"] = "TEST"
    msg["Date"] = email.Utils.formatdate()

    msg.attach(MIMEText(email_message))

    server.login(user_name, user_password)
    server.sendmail(email_from, emails_list_string + ", " + emails_cc_list_string, msg.as_string())

    server.quit()

Когда я использую эту функцию и передаю список адресов электронной почты для email_to_list, она отправляет электронное письмо только первому элементу списка. Передача любого списка для email_cc_list просто добавляет адреса в поле «Копия» в электронном письме, однако я думаю, что это чисто косметический эффект, поскольку люди в копии не видят электронное письмо, когда я его отправляю. с этой функцией. Обычно электронное письмо получает только первый адрес в email_to_list.


person ulak blade    schedule 02.07.2014    source источник


Ответы (1)


В документации говорится:

Обязательными аргументами являются строка адреса отправителя RFC 822, список строк адреса получателя RFC 822 (пустая строка будет рассматриваться как список с 1 адресом) и строка сообщения.

Когда вы передаете emails_list_string + ", " + emails_cc_list_string в server.sendmail в качестве второго параметра, он обрабатывает его как один адрес, вероятно, отсекая все после первой запятой. Вместо этого попробуйте следующее:

server.sendmail(email_from, email_to_list + email_cc_list, msg.as_string())
person janos    schedule 02.07.2014