используя Python SMTP, только один получатель получает почту - PullRequest
0 голосов
/ 08 марта 2019

Я новичок в Python, и ниже приведен код, который должен отправлять почту нескольким получателям, но только dipeshyog94@gmail.com получает почту.milanthapa898@gmail.com, который занимает второе место в To, и alexlee94@gmail.com, который находится в cc, не получает почту

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import smtplib

owner_emp_id_email = "dipeshyogi94@gmail.com,milanthapa989@gmail.com"
mymail='milanthapa898@gmail.com'
msg = MIMEMultipart()
msg['From'] = mymail
msg['To'] = owner_emp_id_email
cc_mail = "alexlee94@gmail.com"
msg['Cc'] = cc_mail
print('####44444444444444########\n')
print(owner_emp_id_email)
msg['Subject'] = 'Automated Test Mail with python'
a = 'Milan Thapa'
#body = 'Dear '+spoc_name+',\n\nYou have created new job with below Details:\n\nProject ID : '+project_ID+'\n\nProject Name : '+ibu_name+'\n\nJob Description : ' +job_description +'\n\nThanks and Regards,\n\nMilan Thapa'
html = """\
            <html>
                <head></head>
                    <body>
                        <p>'Dear <b>{}<b>

                        </p>
                    </body>
            </html>
            """.format(a)
msg.attach(MIMEText(html,'html'))
text = msg.as_string()
try:
    server = smtplib.SMTP('smtp.gmail.com:587')

except:
    server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.ehlo()
server.login(mymail,'password')
server.sendmail(mymail,owner_emp_id_email,text)
server.quit()

Я застрял в этом, не смог отправить почту нескольким пользователям.

любая помощь будет принята с благодарностью!

заранее спасибо

Ответы [ 3 ]

2 голосов
/ 08 марта 2019

Информация в заголовках не контролирует, куда на самом деле отправляется сообщение .Второй аргумент sendmail - единственное место, где это контролируется.Это значение должно быть списком , , а не строкой, разделенной запятой.

owner_emp_id_email = "dipeshyogi94@gmail.com,milanthapa989@gmail.com"
env_rcpts = owner_emp_id_email.split(",")
# ...
cc_mail = "alexlee94@gmail.com"
env_rcpts.append(cc_mail)
# ...
server.sendmail(mymail,env_rcpts,text)

Вы заметите, что вы также можете добавить адреса, которые не указаны ни в To:, ни в Cc:(или ряд других заголовков, которые служат той же цели) для эффективной реализации Bcc:

Может также взглянуть на send_message, что избавляет вас от необходимости отдельно преобразовывать ваше сообщение в строку, которую вы можете передать sendmail.

1 голос
/ 08 марта 2019
msg['To'] = owner_emp_id_email

Здесь owner_emp_id_email является string. Составьте список адресов электронной почты. Тогда это будет работать.

to_ids = owner_emp_id_email.split(',')
msg['To'] = to_ids
0 голосов
/ 08 марта 2019

>>> help(smtplib)

to_addrs: A list of addresses to send this mail to. A bare string will be treated as a list with 1 address.

Вам нужно преобразовать строку CSV в список, как упомянуто в другом ответе.

Этим ответом я просто хотел продемонстрировать, как мы можем использовать удивительную функцию помощи питона, когда застряли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...