2015-10-28 1 views
1

При отправке по электронной почте с smtplib и пытается вставить переменную в сообщение с этим кодом:Python, добавив, запятая в 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') 

Однако, когда я просто использовать «+» для конкатенации двух строк, а не запятой, она работает, но не форматировать должным образом, отображая как «.. weather is: rain», а не «.. weather is: rain»

Я делаю что-то не так, или это просто невозможно?

ответ

1

However, when I simply use "+" to concatenate the two strings, rather than a comma, it works, but does not format properly, displaying as "..weather is:rain" rather than "..weather is: rain"

Вы просто неправильно Построив строку, которая начинается с «Subject» здесь:

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

Когда вы лавировать на con с запятой, как вы делаете здесь, Python думает, что вы передаете conn как аргумент mail_options вызова sendmail(), так же как и другие аргументы этой функции. Он не понимает, что вы пытаетесь втиснуть con в строку «Subject: ...».

However, when I simply use "+" to concatenate the two strings, rather than a comma, it works, but does not format properly, displaying as "..weather is:rain" rather than "..weather is: rain"

Таким образом, вам просто нужно дополнительное пространство после того, как «.. weather is:» bit? Просто добавьте дополнительное пространство в строку. Я предлагаю вам написать сообщение с 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) 
Смежные вопросы