2016-08-04 124 views
0

我搜索了很多,但無法解決我的腳本中的問題。最後,我決定在這裏發佈它。smtplib:爲什麼「收件人」字段中的收件人收到郵件兩次?

下面的代碼片段:

fromaddr = "[email protected]" 
cc = ['[email protected]'] 
toaddr = "" 
    msg = MIMEMultipart() 
    toaddrlist = list(toaddr.split(',')) #As sendmail() accepts the list of recipients only in list form. 
    toaddrlist += (cc,) 
    msg['From'] = fromaddr 
    msg['To'] = toaddr 
    msg['Cc'] = ', '.join(cc) 
    msg['Date'] = formatdate(localtime=True) 
    msgHtml = MIMEText(html, 'html') 
    msg.attach(msgHtml) 
    msg['Subject'] = "Test mail" 
    server = "someMailServer.xyz.com" 
    smtp = smtplib.SMTP(server, 25) 
    smtp.sendmail(fromaddr, toaddrlist, msg.as_string()) 
    smtp.close() #Close the SMTP server connection. 

我知道,我已經確保了味精[「爲」 1]接受字符串值(toaddr),而在sendmail的toaddrlist()應該是一個列表。

捕獲:如果我刪除行toaddrlist += (cc,),則郵件不會傳遞給「收件人」字段中的收件人兩次,但郵件不會傳遞給抄送別名。

請幫忙。

回答

0

當行toaddrlist += (cc,)評估的toaddrlist你的情況的值是:

["", ["[email protected]"]] 

,它是錯誤的,因爲toaddrlist必須是一個字符串列表,不包含某些列表清單。

因此,解決辦法是改變:

toaddrlist += (cc,) 

toaddrlist += cc 

或建議書(Python的方式):

toaddrlist.extend(cc) 
+0

感謝艾哈邁德,但沒有修復似乎正在解決這個問題。我仍然收到電子郵件兩次。爲了查看可能出錯的地方,我列出了'toaddr'和'toaddrlist'的值,它們是'somemail @ xyz.com'和'[u'[email protected]','[email protected]' ']'分別在這兩種情況下。 –

相關問題