Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Python发送电子邮件的程序以“退出”;属性错误:';str';对象没有属性';获取内容主类型''&引用;_Python_Email_Smtp_Gmail_Attachment - Fatal编程技术网

通过Python发送电子邮件的程序以“退出”;属性错误:';str';对象没有属性';获取内容主类型''&引用;

通过Python发送电子邮件的程序以“退出”;属性错误:';str';对象没有属性';获取内容主类型''&引用;,python,email,smtp,gmail,attachment,Python,Email,Smtp,Gmail,Attachment,我有一段python代码,打算发送一封带有附件的电子邮件,我的主要内容如下: #!/usr/bin/python import os, re import sys import smtplib #from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.MIMEText import MIMEText SMTP_SERVER = 'smtp.gmail.c

我有一段python代码,打算发送一封带有附件的电子邮件,我的主要内容如下:

#!/usr/bin/python
import os, re
import sys
import smtplib

#from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.MIMEText import MIMEText


SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587

sender = 'me@gmail.com'
password = "e45dt4iamkiddingthisisnotmypassword"
recipient = 'he@gmail.com'
subject = 'Python emaillib Test'
message = 'Images attached.'

def main():
    msg = MIMEMultipart()
    msg['Subject'] = 'Python emaillib Test'
    msg['To'] = recipient
    msg['From'] = sender

    msg.attach('/tmp/images/a.gif')

    part = MIMEText('text', "plain")
    part.set_payload(message)
    msg.attach(part)

    session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)

    session.ehlo()
    session.starttls()
    session.ehlo

    session.login(sender, password)

#    my_message=msg.as_string()
    qwertyuiop=msg
    session.sendmail(sender, recipient, qwertyuiop.as_string())

    session.quit()

if __name__ == '__main__':
    main()
我在运行时遇到以下错误:

Traceback (most recent call last):
  File "./abcd.py", line 49, in <module>
    main()
  File "./abcd.py", line 44, in main
    session.sendmail(sender, recipient, qwertyuiop.as_string())
  File "/usr/lib/python2.7/email/message.py", line 137, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/lib/python2.7/email/generator.py", line 83, in flatten
    self._write(msg)
  File "/usr/lib/python2.7/email/generator.py", line 108, in _write
    self._dispatch(msg)
  File "/usr/lib/python2.7/email/generator.py", line 134, in _dispatch
    meth(msg)
  File "/usr/lib/python2.7/email/generator.py", line 203, in _handle_multipart
    g.flatten(part, unixfrom=False)
  File "/usr/lib/python2.7/email/generator.py", line 83, in flatten
    self._write(msg)
  File "/usr/lib/python2.7/email/generator.py", line 108, in _write
    self._dispatch(msg)
  File "/usr/lib/python2.7/email/generator.py", line 125, in _dispatch
    main = msg.get_content_maintype()
AttributeError: 'str' object has no attribute 'get_content_maintype'
回溯(最近一次呼叫最后一次):
文件“/abcd.py”,第49行,在
main()
文件“/abcd.py”,第44行,主
session.sendmail(发件人、收件人、qwertyuiop.as_字符串())
文件“/usr/lib/python2.7/email/message.py”,第137行,格式为字符串
g、 展平(自,unixfrom=unixfrom)
文件“/usr/lib/python2.7/email/generator.py”,第83行,扁平化
自我书写(msg)
文件“/usr/lib/python2.7/email/generator.py”,第108行,以书面形式
自动发送(msg)
文件“/usr/lib/python2.7/email/generator.py”,第134行,在
甲基(味精)
文件“/usr/lib/python2.7/email/generator.py”,第203行,多部分
g、 展平(零件,unixfrom=False)
文件“/usr/lib/python2.7/email/generator.py”,第83行,扁平化
自我书写(msg)
文件“/usr/lib/python2.7/email/generator.py”,第108行,以书面形式
自动发送(msg)
文件“/usr/lib/python2.7/email/generator.py”,第125行,在
main=msg.get\u content\u maintype()
AttributeError:“str”对象没有属性“get\u content\u maintype”

我假设它与msg.attach(“/tmp/images/a.gif”)有关,但我不确定。问题的根源是qwertyuiop.as_string()。

问题是
msg.attach()
附加了另一条消息,而不是字符串/文件名。您需要创建一个
MIMEImage
对象并附加:

# instead of msg.attach('/tmp/images/a.gif')...
fp = open('/tmp/images/a.gif', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msg.attach(msgImage)
改编自

如果您想要图像以外的类型,请签出

qwertyuiop.as\u string()
行上出现错误的原因是,只有调用
as\u string()
才能解析消息