感谢简书上一位大佬的笔记,忘记是谁了,不好意思~此文仅作为笔记使用,若侵请联系删除。
如HTTP是计算机用来通过因特网发送网页的协议一样,SMTP(简单邮件传输协议)是用于发送电子邮件的协议。SMTP规定电子邮件应该如何格式化、加密、在邮件服务器之间传递。python的smtplib模块将它们简化成了几个函数。
smtplib主要方法:
1、实例化一个SMTP对象:
s=smtplib.SMTP(邮件服务地址如'smtp@163.com',端口号如'465')
s=smtplib.SMTP_SSL(邮件服务地址如'smtp@163.com',端口号如'465')#SSL加密
2、登陆邮件,权限验证:
s.login(用户名如'sx_199610@163.com',密码)
3、发送邮件:
s.sendmail(发件人邮箱,收件人邮箱,发送内容)
4、断开连接
s.quit()
Email模块:
email支持发送的邮件内容为纯文本、HTML内容、图片、附件。email中有几大类泪针对不同的邮件内容形式,常用如下:
MIMEText:(MIME媒体类型)内容形式为纯文本、HTML页面。
MIMEimage:内容形式为图片。
MIMEMultupart:多形式组合,可包含文本和附件。
代码如下:
from email.mime.text import MIMEText
import smtplib
from email.header import Header
from email.utils import parseaddr,formataddr#设置编码格式
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders
#将用户名编码设置成UTF-8
def _format_addr(s):
name,addr=parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(),addr))
#定义email的地址,口令和SMTP服务器地址
from_addr='sx_199610@163.com'
password=input('请输入发送邮箱的密码:') #注意此处输入的密码是自己设置的协议密码
to_addr='sx_wy123@163.com'
smtp_server='smtp.163.com'
#定义邮件本身内容
msg=MIMEMultipart()
msg['From']=_format_addr('发送者的ReedSun<%s>'%from_addr)
msg['To']=_format_addr('接收者的ReedSun<%s>'%to_addr)
msg['Subject']=Header('hhh,这是二封测试信','utf-8').encode()
#定义邮件正文
msg.attach(MIMEText('使用python发来的邮件3','plain','utf-8'))
#加附件
with open(r'C:UsersAdministratorDesktoptesttest0.jpg','rb') as f:
# 设置附件的MIME和文件名,这里是jpg类型,可以换png或其他类型:
mime=MIMEBase('image','jpg',filename='test0.jpg')
mime.add_header('Content-Disposition','attchment',filename='test0.jpg')
mime.add_header('Content-ID','<0>')
mime.add_header('X-Attachment-ID','0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
msg.attach(mime)
#定义发送文件
server=smtplib.SMTP_SSL(smtp_server,465)
server.set_debuglevel(1)
server.login(from_addr,password)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()