python使用smtp模块的sendmail()方法发送邮件时,并不区分是“发送给”、“抄送给”还是“密送给”,都一视同仁的放在该方法的第二个参数中,但邮件头(也就是收到的邮件中头部“收件人”、“抄送”等信息)却是由第三个参数决定,也就是说邮件的表现形式是在邮件头里定义的,所以如果想“密送”给某人,只要把他的地址加在第二个参数里,而不要在邮件头里出现就行了。下面是代码实例。
import smtplib, ConfigParser, datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
config = ConfigParser.ConfigParser()
config.read('build.cfg')
try:
mail_server = smtplib.SMTP(config.get('mail','server_addr'))
mail_server.set_debuglevel(1)
mail_server.login(config.get('mail','username'), config.get('mail','password'))
except Exception,e:
exit()
from_addr = config.get('mail','from_addr')
to_addr = config.get('mail','to_addr')
copyto_addr = config.get('mail','copyto_addr')
sending_date = datetime.datetime.now().strftime("%d/%m/%Y %H:%M")
message_body = '<html><body>aa</body></html>'
msg = MIMEMultipart()
msg.add_header('From',from_addr)
msg.add_header('To',to_addr)
msg.add_header('Cc',copyto_addr)
msg.add_header('Subject',config.get('mail','subject'))
msg.add_header('Date',sending_date)
msg.attach(MIMEText(message_body, 'html'))
mail_server.sendmail(from_addr, to_addr.split()+copyto_addr.split(), msg.as_string())
mail_server.quit()
在代码所在文件夹下写一个build.cfg文件,内容如下:
[mail]
server_addr: 124.127.106.5
username: lichao1
password: aba...
from_addr: LiChao<lichao1@boco.com.cn>
to_addr: lichao1@boco.com.cn zhaohuaqiao_kkk@boco.com.cn
copyto_addr: leechau@126.com liu_xin_kkk@boco.com.cn
subject: BVT Reports