2014-10-14 2 views
0

Я написал очень простой скрипт в Python, который позволяет мне быстрее или легко отправлять электронные письма. Я не собираюсь использовать его изо дня в день, это скорее доказательство концепции для меня.Новичок - строка темы в письмах

Я не могу получить строку темы, чтобы отображаться. Я могу отправлять электронные письма, но когда я пытаюсь включить строку темы с помощью метода, который я описываю в нижней части этого вопроса, он просто не отправляет письмо (я знаю, что тема в настоящее время прокомментирована!). Вот мой код в настоящее время:

import smtplib 

candidate_name = raw_input("Candidate Name: ") 
candidate_email = raw_input("Candidate Email: ") 

# Specifying the from and to addresses 

fromaddr = 'XXXX' 
toaddrs = '%s' % candidate_email 
#subject = 'Phone call' 

# Writing the message (this message will appear in the email) 

msg = ''' 
Hi %s 

Thanks for taking my call just now. As discussed if you could send me a copy of your CV  that would be great and I'll be back in touch shortly. 

Cheers 
XXXX''' %candidate_name 



username = 'XXXX' 
password = 'XXXX' 

# Sending the mail 

server = smtplib.SMTP('XXXX') 
server.starttls() 
server.login(username,password) 
server.sendmail(fromaddr, toaddrs, msg) 
print "Email sent to %s at %s" % (candidate_name, candidate_email) 
server.quit() 

Я попытался добавить предмет в передающей почте линию, как это:

server.sendmail(fromaddr, toaddrs, subject, msg) 

Но это ничего не делать.

Надеюсь, это не очень глупый вопрос. Я только начинаю учиться Python.

ответ

1

Декларация SMTP.sendmail:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

Он ожидает, что субъект как часть сообщения, и сообщение будет третий аргумент пройдена. Вы переносите сообщение на четвертый аргумент и отправляете его и тему отдельно.

1

Вы можете прикрепить его в качестве заголовка:

msg = 'Subject: %s\n%s' % (subject_text, message_text) 

server = smtplib.SMTP(SERVER) 
server.sendmail(fromaddress, toaddress, msg) 
server.quit() 

Вы должны рассмотреть возможность использования стандартного модуля Python электронной почты - это поможет вам много при написании писем.

1

См. specify-a-sender-when-sending-mail..., тема mime header.

Вы можете использовать email.message.Message class и использовать его для создания заголовков mime, в том числе от :, до: и subject.

Приведите результат as_string(), используя smtplib (см. Другие ответы).

>>> from email import message 
>>> m1=message.Message() 
>>> m1.add_header('from','[email protected]') 
>>> m1.add_header('to','[email protected]') 
>>> m1.add_header('subject','test') 
>>> m1.set_payload('test\n') 
>>> m1.as_string() 
'from: [email protected]\nto: [email protected]\nsubject: test\n\ntest\n' 
>>> 
Смежные вопросы