python3 smtplib发送邮件
使用smtp包发送邮件还依赖email的一些方法
发送邮件主要分为三步:
1,定义邮箱参数:邮箱服务器地址,邮箱用户名,邮箱密码,邮件发送方,邮件接收方,邮件标题,邮件内容
2,配置发送内容
3,实例化邮箱,连接邮箱,登陆邮箱,发送邮件
代码如下:
import smtplib from email.mime.text import MIMEText from email.header import Header #定义邮箱参数 mail_sever = 'smtp.163.com' #邮箱服务器地址 mail_user = 'xxx@163.com' #邮箱用户名 mail_pass = 'xxx' #邮箱密码
sender = 'xxx@163.com' #邮件发送方 reciver = 'xxx@qq.com' #邮件接收方
subject = 'python' #邮件标题 content = 'over' #邮件内容 #配置发送内容 msg = MIMEText(content,_subtype='plain',_charset='utf-8') # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
msg['subject'] = Header(subject,'utf-8') #邮件标题 msg['From'] = sender #邮件发送方 msg['To'] = reciver #邮件接收方 #实例化邮箱 smtp = smtplib.SMTP() #实例化邮箱 smtp.connect(mail_sever) #连接邮箱服务器 smtp.login(user=mail_user,password=mail_pass) #登陆邮箱 smtp.sendmail(sender,reciver,msg.as_string()) #发送邮件 print('ok')
补充:
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python创建 SMTP 对象语法如下:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
- host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:w3cschool.cn,这个是可选参数。
- port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。
- local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。
Python SMTP对象使用sendmail方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
参数说明:
- from_addr: 邮件发送者地址。
- to_addrs: 字符串列表,邮件发送地址。
- msg: 发送消息
这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。
添加附件的方法:
import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart #定义邮箱参数 mail_sever = 'smtp.163.com' #邮箱服务器地址 mail_user = 'xxx@163.com' #邮箱用户名 mail_pass = 'xxxx' #邮箱密码 sender = 'xxx@163.com' #邮件发送方 reciver = 'xxx@163.com' #邮件接收方 subject = 'python' #邮件标题 #配置发送内容 # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码 # msg = MIMEText(content,_subtype='plain',_charset='utf-8') msg = MIMEMultipart() #邮件标题 msg['subject'] = Header(subject,'utf-8') #邮件发送方 msg['From'] = sender #邮件接收方 msg['To'] = reciver #邮件正文内容 msg.attach(MIMEText('邮件发送测试...','plain','utf-8')) #构造附件1 att1 = MIMEText(open(r"C:\\Users\\jfw2462\\Desktop\\工作\\环境\\服务器密码IP信息.xlsx",'rb').read(),'base64','utf-8') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="test.xlsx"' msg.attach(att1) #实例化邮箱 smtp = smtplib.SMTP() #连接邮箱服务器 smtp.connect(mail_sever) #登陆邮箱 smtp.login(user=mail_user,password=mail_pass) #发送邮件 smtp.sendmail(sender,reciver,msg.as_string()) print('ok')