2017-05-31 36 views
0

我编写了一个成功发送邮件的电子邮件模块,但收件人将他们的电子邮件地址显示为逗号分隔的字符列表。在gmail网页邮件页面中,它看起来像这样:t, e, s, t, @, g, m, a, i, l, ., c, o, m,,但在每个字母之间换行。在Thunderbird电子邮件客户端中,它看起来像这样:t<>, e<>, s<>, t<>, @<>, g<>, m<>, a<>, i<>, l<>, .<>, c<>, o<>, m<>,。我正在使用Gmail来发送这些电子邮件。以下是我写的电子邮件模块。任何人都可以帮助我弄清楚如何使电子邮件地址正常显示给收件人?先谢谢你。Python,Gmail,发送邮件以地址列表形式显示地址

import smtplib 
import ConfigurationManager 
from email import encoders 
from email.MIMEBase import MIMEBase 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 


class EmailHandler(object): 
    def __init__(self, passed_values): 
     self._filename = passed_values.get('filename') 
     self._subject = passed_values.get('subject') 
     self._from_address = passed_values.get('from_address') 
     self._to_addresses = passed_values.get('to_addresses') 
     self._email_password = passed_values.get('email_password') 
     self._body = passed_values.get('body') 

    @property 
    def filename(self): 
     return self._filename 

    @filename.setter 
    def filename(self, value): 
     self._filename = value 

    @property 
    def from_address(self): 
     return self._from_address 

    @from_address.setter 
    def from_address(self, value): 
     self._from_address = value 

    @property 
    def to_addresses(self): 
     return self._to_addresses 

    @to_addresses.setter 
    def to_addresses(self, value): 
     self._to_addresses = value 

    @property 
    def body(self): 
     return self._body 

    @body.setter 
    def body(self, value): 
     self._body = value 

    @property 
    def subject(self): 
     return self._body 

    @body.setter 
    def body(self, value): 
     self._body = value 

    def send_email_with_attachment(self): 
     msg = MIMEMultipart() 
     msg['From'] = self._from_address 
     msg['To'] = ', '.join(self._to_addresses) 
     msg['Subject'] = self._subject 
     msg.attach(MIMEText(self._body, 'plain')) 
     attachment = open (self._filename + '.zip', "rb") 
     part = MIMEBase('application', 'octet-stream') 
     part.set_payload(attachment.read()) 
     encoders.encode_base64(part) 
     part.add_header('Content-Disposition', "attachment; filename= %s" % self._filename + '.zip') 
     msg.attach(part) 
     server = smtplib.SMTP('smtp.gmail.com', 587) 
     server.starttls() 
     server.login(self._from_address, self._email_password) 
     text = msg.as_string() 
     server.sendmail(self._from_address, self._to_addresses, text) 
     server.quit() 
+1

是你偶然会把'to_addresses'作为一个字符串?它应该是一个字符串列表。如果你只想传递一个to_address,那么它应该仍然是一个只有一个元素的列表,也就是'['[email protected]']' –

+0

就是这样。一个非常简单的变化,因为电子邮件地址已经在列表中开始了。我正在将它们转换为字符串,因为我认为这是必要的。非常感谢你!如果您将此作为答案发布,我会接受它。 – OnlyDean

+0

发表回答,谢谢! –

回答

2

如果你传递to_addresses为一个字符串,那么它将加入与,字符串的每个字符。

在你把它当作一个列表的代码,所以即使你只传递一个电子邮件地址,它需要在列表中的单个字符串元素,像这样:

['[email protected]'] 
相关问题