从我的126邮箱给我的QQ邮箱发送测试邮件
1.smtplib模块的使用
smtplib库用来发送邮件。需要用到的函数如下:
连接到SMTP服务器,参数为SMTP主机和端口:
SMTP.connect([host[,port]]) 登录SMTP服务器,参数为邮箱用户名和密码: SMTP.login(user,password) 发送邮件。msg表示邮件内容: SMTP.sendmail(from_addr, to_addrs, msg) 断开连接: SMTP.quit()2.邮件格式MIME介绍
最常见的MIME首部是以Content-Type开头的:
1) Content-Type: multipart/mixed
它表明这封Email邮件中包含各种格式的MIME实体但没有具体给出每个实体的类型。2) Content-Type: multipart/alternative
如果同一封Email邮件既以文本格式又以HTML格式发送,那么要使用Content-Type: multipart/alternative。这两种邮件格式实际上是显示同样的内容但是具有不同的编码。3) Content-Type: multipart/related
用于在同一封邮件中发送HTML文本和图像或者是其他类似类型。邮件主体的编码:
主要是包括quoted-printable与base64两种类型的编码。Base64和Quoted-Printable都属于MIME(多用途部分、多媒体电子邮件和 WWW 超文本)的一种编码标准,用于传送诸如图形、声音和传真等非文本数据)。
#!/usr/bin/python
#coding:utf-8 import smtplib from email.Header import Header from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.p_w_picpath import MIMEImagedef sendMail(sender,receiver,subject):
smtpserver = 'smtp.126.com' username = 'zhaohaihua1213' password = '123456'msg = MIMEMultipart('alternative')
msg['Subject'] = Header(subject,'utf-8')
#html格式构造
html = """\
<html> <head>测试一下</head> <body> <p>兄弟们!<br> 你们好啊<br> 点击进入 <a href="">会计家园</a> <br><img src="cid:meinv_p_w_picpath"></br> </p> </body> </html> """ htm = MIMEText(html,'html','utf-8') msg.attach(htm)
#构造图片
fp = open('meinv.jpg','rb')
msgImage = MIMEImage(fp.read()) fp.close()msgImage.add_header('Content-ID','<meinv_p_w_picpath>')
msg.attach(msgImage)
#构造附件
att = MIMEText(open('Pictures.rar','rb').read(),'base64','utf-8')
att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attatchment;filename="Pictures.rar"' msg.attach(att)smtp = smtplib.SMTP()
smtp.connect('smtp.126.com') smtp.login(username,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit()sender =
receiver = subject = '图片附件html发送邮件测试' sendMail(sender,receiver,subject)执行一下看看效果:
#python email.py
工作中的应用场景,用来发送zabbix监控页面: