我在Windows 8.1上的Python 3.3中使用了yagmail -0.3.78。我可以让yagmail从控制台发送电子邮件,但附件不起作用。
yagmail.Connect('[email protected]','password').send('[email protected]', 'Test', 'This is a test', 'c:\\users\\lenovo\\appdata\\local\\temp\\mydoc.docx')
这将返回一个空dict,在控制台中没有错误。电子邮件显示正确的主题和正文,但没有附件。起初我以为我的防病毒软件可能会删除附件,但防病毒日志中没有任何内容表明它已删除。
ps。显然yagmail没有标签,而且我没有代表来创建它。
编辑1:有进展(?)
contents = ['This is a test', 'c:\\users\\lenovo\\appdata\\local\\temp\\mydoc.docx']
yagmail.Connect('[email protected]','password').send('[email protected]', 'Test',contents)
...导致以下错误。
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
File "C:\Python33\lib\site-packages\yagmail-0.3.78-py3.3.egg\yagmail\yagmail.py", line 73, in send
return self._attempt_send(addresses['recipients'], msg.as_string())
File "C:\Python33\lib\site-packages\yagmail-0.3.78-py3.3.egg\yagmail\yagmail.py", line 79, in _attempt_send
result = self.smtp.sendmail(self.user, recipients, msg_string)
File "C:\Python33\lib\smtplib.py", line 749, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 713-715: ordinal not in range(128)
编辑2:感谢PascalvKooten,请在下面查看他的答案。只是关于语法的注释...
yagmail.SMTP('[email protected]','password').send('[email protected]','Test1.2','This is a test','C:\\Users\\Lenovo\\AppData\\Local\\Temp\\mydoc.docx')
对我不起作用。但是,以下结构确实有效。
contents = ['This is a test', 'C:\\Users\\Lenovo\\AppData\\Local\\Temp\\mydoc.docx']
yagmail.SMTP('[email protected]','password').send('[email protected]','Test1.2',contents)
最佳答案
作为yagmail软件包的维护者回答:请参见此问题https://github.com/kootenpv/yagmail/issues/5
从0.3.81版本开始应该解决。
请使用pip3 install -U yagmail
更新
我从未在Windows上测试过此功能,所以这是我唯一的不确定性。
关于python - Python Yagmail附件无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30953792/