初学者 - 电子邮件中的主题行

时间:2014-10-14 09:17:47

标签: python email smtp subject

我在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。

3 个答案:

答案 0 :(得分:1)

SMTP.sendmail声明:

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

它希望主题作为消息的一部分,并且消息是传递的第三个参数。您将消息移动到第四个参数并分别发送它和主题。

答案 1 :(得分:1)

您可以将其作为标题添加:

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

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

您应该考虑使用标准的Python模块电子邮件 - 它会在撰写电子邮件时为您提供很多帮助。

答案 2 :(得分:1)

请参阅specify-a-sender-when-sending-mail...,主题是 mime标题

您可以使用email.message.Message class,并使用它来生成mime标头,包括:,从:和主题

使用as_string()发送smtplib结果(请参阅其他答案)。

>>> from email import message
>>> m1=message.Message()
>>> m1.add_header('from','me@no.where')
>>> m1.add_header('to','myself@some.where')
>>> m1.add_header('subject','test')
>>> m1.set_payload('test\n')
>>> m1.as_string()
'from: me@no.where\nto: myself@some.where\nsubject: test\n\ntest\n'
>>>