【问题标题】:Exception in Python email blockPython 电子邮件块中的异常
【发布时间】:2016-03-12 02:05:59
【问题描述】:

我下面的代码是用于发送带有附件的电子邮件。

def email(location):
    COMMASPACE = ', '
    fromaddr = "jeff@abc.com"
    toaddr =  ("jeff@def.com")
    outer = MIMEMultipart()
    outer['Subject'] = 'Dashboard'
    outer['From'] = fromaddr
    outer['To'] = toaddr
    msg = MIMEBase('text','plain')
    msgtext = 'Please find dashboard for the current reporting week.'
    msg.set_payload(msgtext)
    Encoders.encode_base64(msg)
    outer.attach(msg)
    outer.epilogue = ' '
    ctype, encoding = mimetypes.guess_type("parse.mht")
    maintype, subtype = ctype.split('/', 1)
    fp = open(location,'rb')
    msg = MIMEBase(maintype, subtype)
    msg.set_payload(fp.read())
    fp.close()
    Encoders.encode_base64(msg)
    msg.add_header('Content-Disposition', 'attachment', filename='Dashboard.mht')
    outer.attach(msg)
    s = smtplib.SMTP()
    s.connect('mailhost.dev.ch3.s.com')
    s.sendmail(fromaddr, toaddr, outer.as_string(False))
    s.close()
try:
    email(location)
    appendlog.write("Email has been sent, clearing down files... \n")
    print "Email has been sent, clearing down files..."
    success = 1
except Exception,e:
    print repr(e)
    print "Email has failed to send."

我得到一个例外

Typerror("期望的列表,得到类型'str'",)

电子邮件发送失败

谁能告诉我代码有什么问题?

【问题讨论】:

  • 你能发布完整的跟踪吗?
  • @JacobWalker 因为我是从服务器运行的,所以这就是我从日志文件中得到的全部内容。 :(
  • 是复制粘贴的吗?

标签: python email mime


【解决方案1】:

如果您使用 SMTP,toaddr 应该是 list,而不是 tuplestr

或者你可以使用yagmail,你也可以只发送一个字符串,发送附件也更容易:

import yagmail
fromaddr = "jeff@abc.com"
toaddr =  "jeff@def.com"

yag = yagmail.SMTP(fromaddr, 'yourpassword', host='mailhost.dev.ch3.s.com')

yag.send(toaddr, 'Subject', ['Please find dashboard for the current reporting week.', 
                             '/path/to/local/parse.mht'])

请注意,将文件名添加为字符串会将其转换为附件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多