我在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。
答案 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'
>>>