2017-10-28 106 views
0

我不知道如何解決這個問題。我檢查了大多數smtplib線程和那些關於「AttributeError:'元組'對象沒有屬性'編碼'」smtplib,'元組'對象沒有屬性'編碼'

我想創建消息模板從Python3腳本發送電子郵件。出於某種原因,當我添加消息模板時,我無法以任何方式解決此問題。

import smtplib 
import additional 
import datetime 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

#server commends 
server = smtplib.SMTP('smtp.gmail.com', 587) 
server.ehlo() 
server.starttls() 
server.ehlo() 

#credentials of sender 
FROM = "xxx.gmail.com" 
PASSWORD = additional.x #hidden password in other .py file 

#logging in 
server.login(FROM, PASSWORD) 


#template for recievers 
TOADDR = ["reciever email"] 
CC = ["FIRST CC", "2ND CC"] 
SUBJECT = "testing" 
TEXT = "Let's check if this works and I joined everything correctly" 

#MSG template 

FINAL_TO = CC + [TOADDR] 
message = MIMEMultipart() 
message['From'] = "Michal", FROM 
message['To'] = TOADDR 
message['Cc'] = ", ".join(CC) 
message['Subject'] = SUBJECT 
message.attach(MIMEText(TEXT)) 

MSG = message.as_string() 

#Join reciever with CC 
FINAL_TO = CC + [TOADDR] 


server.sendmail(FROM, FINAL_TO, MSG) 

TIME = datetime.datetime.now() 
print("Email sent at {}".format(TIME)) 

如上所述,我的輸出是:在一個MIME消息必須是字符串

Traceback (most recent call last): 
    File "/home/galander/Desktop/sending email/app.py", line 39, in <module> 
    MSG = message.as_string() 
    File "/usr/lib/python3.6/email/message.py", line 158, in as_string 
    g.flatten(self, unixfrom=unixfrom) 
    File "/usr/lib/python3.6/email/generator.py", line 116, in flatten 
    self._write(msg) 
    File "/usr/lib/python3.6/email/generator.py", line 195, in _write 
    self._write_headers(msg) 
    File "/usr/lib/python3.6/email/generator.py", line 222, in _write_headers 
    self.write(self.policy.fold(h, v)) 
    File "/usr/lib/python3.6/email/_policybase.py", line 326, in fold 
    return self._fold(name, value, sanitize=True) 
    File "/usr/lib/python3.6/email/_policybase.py", line 369, in _fold 
    parts.append(h.encode(linesep=self.linesep, maxlinelen=maxlinelen)) 
AttributeError: 'tuple' object has no attribute 'encode' 
+0

什麼是完整的追蹤?這告訴我們這個異常發生在哪裏,Python是如何到達那裏的。 –

+0

這很重要,因爲*你的發佈代碼不會在任何地方調用'encode()'*。 –

+0

我懷疑這是你的'message'('From']'這一行是真正的原因。你不能在那裏使用一個元組。 –

回答

2

頭。您已將元組分配給From,並將一個元組分配給To

讓這些字符串太:

message['From'] = "Michal <{}>".format(FROM) 
message['To'] = ', '.join(TOADDR) 
+0

做了一個工作,趕快回復! – michael93pl

相關問題