Python,在smtplib参数中添加逗号会导致错误

时间:2015-10-28 20:50:02

标签: python python-2.7 email smtplib

在发送带有smtplib的电子邮件时,尝试使用以下代码将变量插入到邮件中:

smtpObj.sendmail('my email', 'my email', "Subject: Info for today.  \nToday's weather is:",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')

但是,当我只使用" +"连接两个字符串,而不是逗号,它的工作原理,但格式不正确,显示为" ..天气是:下雨"天气是:雨"

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

1 个答案:

答案 0 :(得分:1)

  

但是,当我只使用" +"连接两个字符串,而不是逗号,它的工作原理,但格式不正确,显示为" ..天气是:下雨"天气是:雨"

你只是错误地构造了以&#34开头的字符串;主题"这里:

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

当您使用逗号(例如您在此处)使用con时,Python认为您将conn作为sendmail()调用的mail_options参数传递,与该函数的其他参数相同。它不明白你是想把con塞进那个"主题:......"字符串。

  

但是,当我只使用" +"连接两个字符串,而不是逗号,它的工作原理,但格式不正确,显示为" ..天气是:下雨"天气是:雨"

所以在#34;天气之后你只需要一个额外的空间:"位?只需在字符串中添加额外的空格即可。我建议您使用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)