在发送带有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')
但是,当我只使用" +"连接两个字符串,而不是逗号,它的工作原理,但格式不正确,显示为" ..天气是:下雨"天气是:雨"
我做错了什么,或者这根本不可能?答案 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)