2016-12-29 72 views
0

我使用python脚本发送多个收件人邮件,并且它可以工作,但在邮件的“收件人”中,该字段为空。在我试过的每个邮件提供商上。Python2.7发送邮件,为什么msg ['To']保持空白?

这里是我的代码:

def send_mail(self, server, send_from, subject, attach, foo=None, bar=None) 
    msg = MIMEMultipart() 
    msg['From'] = send_from 
    msg['Subject'] = subject 

    body = u"""<html> My Body </html>""" 

    #Attach file pdf 
    msg.attach(MIMEText(body, 'html', 'utf-8')) 
    filename = 'fname.pdf' 
    attachment = open(attach, "rb") 
    part = MIMEBase('application', 'octet-stream') 
    part.set_payload((attachment).read()) 
    encoders.encode_base64(part) 
    part.add_header('Content-Disposition', "attachment; filename = %s" % filename) 
    msg.attach(part) 

    text = msg.as_string() 

    if foo != None and bar != None: 
     recipients = ["[email protected]", "[email protected]"] 
     msg['To'] = ", ".join(recipients) 
     server.sendmail(send_from, recipients, text) 
    else: 
     msg['To'] = "[email protected]" 
     server.sendmail(send_from, msg['To'], text) 
    sleep(1) 

味精[“要”]应该是在我的邮件,但它保持为空“到”。 (即使在只有一个收件人的“其他”中)。我在现有的问题上找不到任何帮助,所以我来请求你的帮助。

回答

0

根据文档,第二个参数是收件人列表。你需要改变你的线路

server.sendmail(send_from, msg['To'], text) 

server.sendmail(send_from, [msg['To']], text) 
+0

对于“if”的第一个块,var收件人是一个列表,所以我发送列表(并且问题仍然出现在邮件中的“To”)。对于第二块我只有一个收件人,我还需要给出一个元素的列表?我只用一个收件人完成了很多类似的脚本,我查了一下,我没有给出一个列表。 –

+0

嗨,对不起。我错误地理解了你的问题,所以我的回答是错误的。我将删除这个答案,因为它的误导。 – Ymartin

0

终于找到了:

text = msg.as_string()应assignement到msg['To']后进行,以便它会出现在我的ifelse块中庸之道前server.sendmail(send_from, msg['To'], text),因为所有写在邮件中的信息,甚至'To'和'From'都在第三个参数text中。

相关问题