【问题标题】:Python, adding comma in smtplib argument causes errorPython,在 smtplib 参数中添加逗号会导致错误
【发布时间】:2016-01-28 20:03:15
【问题描述】:

在使用 smtplib 发送电子邮件并尝试使用以下代码将变量插入到消息中时:

smtpObj.sendmail('my email', 'my email', "Subject: Info for today.  \nToday's weather is:",con) 

(其中 con 是从互联网上抓取的天气信息)

抛出以下错误:

File "C:\Python27\lib\smtplib.py", line 731, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (501, '5.5.4 Invalid arguments', 'my email here')

但是,当我简单地使用“+”而不是逗号来连接两个字符串时,它可以工作,但格式不正确,显示为“..weather is:rain”而不是“..weather is:雨”

我做错了什么,或者这根本不可能?

【问题讨论】:

    标签: python python-2.7 email smtplib


    【解决方案1】:

    但是,当我简单地使用“+”而不是逗号来连接两个字符串时,它可以工作,但格式不正确,显示为“..weather is:rain”而不是“..weather is:雨”

    您只是在这里错误地构造了以“主题”开头的字符串:

    smtpObj.sendmail('my email', 'my email', "Subject: Info for today.  \nToday's weather is:",con) 
    

    当您像在此处一样使用逗号添加con 时,Python 认为您将conn 作为sendmail() 调用的mail_options 参数传递,与该函数的其他参数相同.它不明白您试图将con 塞进那个“主题:...”字符串。

    但是,当我简单地使用“+”而不是逗号来连接两个字符串时,它可以工作,但格式不正确,显示为“..weather is:rain”而不是“..weather is:雨”

    所以你只需要在“..weather is:”位之后有一个额外的空间吗?只需在字符串中添加额外的空格。我建议您通过以下方式之一使用con 参数编写您的消息:

    msg = "Subject: Info for today.  \nToday's weather is: " + con
    # or like this:
    msg = "Subject: Info for today.  \nToday's weather is: %s" % (con,)
    

    然后发送您的电子邮件:

    smtpObj.sendmail('my email', 'my email', msg)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-09
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多