2012-03-15 2 views
0

В сценарии python существует переменная x, я хочу отправить значение x по электронной почте. Мой кодв python, как отправить значение переменной по электронной почте

s=smtplib.SMTP('locaolhost') 
s.sendmail(FROM, TO, "the answer is x") 

Но я всегда получал сообщение the answer is x вместо x быть реальным значением. Как это решить?

+1

Вы используете сложные библиотеки, но тогда не знаете, как форматировать строки? Я настоятельно рекомендую вам узнать минимум до того, как вы спросите ... –

ответ

2
s.sendmail(FROM, TO, "the answer is " + str(x)) 

Вы сначала преобразовать значение x в строку с помощью str(x), затем добавить str(x) до конца строки "the answer is " по +.

+0

Спасибо! Он работает сейчас! – user1224398

+0

Другой вопрос, как сделать тему для письма? теперь нет темы. – user1224398

+0

Вы должны включить тему в начале сообщения: Например, здесь http://effbot.org/pyfaq/how-do-i-send-mail-from-a-python-script.htm –

3

Здесь вы можете использовать конкатенирование строк, как и везде.

s.sendmail(FROM, TO, "the answer is " + x) 

Или вы можете использовать синтаксис формата печати:

s.sendmail(FROM, TO, "the answer is {}".format(x)) 

Подробнее: http://docs.python.org/tutorial/inputoutput.html#fancier-output-formatting

+0

Избегайте использовать x как str(), как это, но используйте форматирование% s, как в моем ответе. –

+0

Я отредактировал операцию%. Из руководства ввода/вывода: «Поскольку str.format() является совершенно новым, много кода на Python все еще использует оператор%. Однако, поскольку этот старый стиль форматирования в конечном итоге будет удален из языка, str.format() как правило, должны использоваться ». – mikaelb

+0

Благодарим вас за быстрый ответ. Задача решена. – user1224398

1
s=smtplib.SMTP('localhost') 
s.sendmail(FROM, TO, "the answer is %s" % x) # here is the change 

Вы забыли% S форматировщик в строке!

Итак:

x = 'hello world' 
s.sendmail(FROM, TO, "the answer is x") 

Выход: the answer is x

И:

x = 'hello world' 
s.sendmail(FROM, TO, "the answer is %s" % x) 

Выход: the answer is hello world

1

Ваш Sendmail строка должна выглядеть так:

s.sendmail(FROM, TO, "The answer is "+x) 
+0

Спасибо за ваш ответ ~ – user1224398

Смежные вопросы