Python yagmail附件不起作用

时间:2015-06-20 12:05:37

标签: python python-3.x yagmail

我在Windows 8.1上使用yagmail - 0.3.78和Python 3.3。我可以让yagmail从我的控制台发送电子邮件,但附件不起作用。

yagmail.Connect('myemail@gmail.com','password').send('someguy@gmail.com', 'Test', 'This is a test', 'c:\\users\\lenovo\\appdata\\local\\temp\\mydoc.docx')

这会在控制台中返回一个没有错误的空dict。电子邮件显示正确的主题和正文但没有附件。起初我以为我的防病毒软件可能正在删除附件,但防病毒日志中没有任何内容可以表明它是。

P.S。显然yagmail没有标签,我也没有创建它的代表。

编辑-1:一些进展(?)

contents = ['This is a test', 'c:\\users\\lenovo\\appdata\\local\\temp\\mydoc.docx']
yagmail.Connect('myemail@gmail.com','password').send('someguy@gmail.com', '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('mymail@gmail.com','password').send('someguy@gmail.com','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('mymail@gmail.com','password').send('someguy@gmail.com','Test1.2',contents)

1 个答案:

答案 0 :(得分:1)

回答yagmail包的维护者:请参阅此问题https://github.com/kootenpv/yagmail/issues/5

应该从版本0.3.81开始解决。

请使用pip3 install -U yagmail

进行更新

我从来没有测试过这个在Windows上工作,所以这是我唯一的不确定性。