发送邮件
如何发一封简单的邮件 步骤:构造邮件(email)- 发送邮件(smtplib)-发送成功
1. smtplib模块
import smtplib
server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()
解析:
(1)第一行,是引入smtplib模块
(2)第三行,server是一个变量,smtplib.SMTP()是变量server的值,SMTP 是smtpli把模块中的一个类
(3)SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则
(4)第四行代码,连接(connect)指定的服务器,host是指定连接的邮箱服务器;port 是端口,默认端口号是25
(5)若使用的是QQ邮箱,SMTP服务器地址是:smtp.qq.com,端口是465或587;QQ 邮箱采用的加密方式是SSL
如果端口是用SSL加密,请这样写代码。其中server是变量名:server = smtplib.SMTP_SSL()
如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com',465,'utf-8'):server.connect('smtp.qq.com', 465)
(6)第五行代码,login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权
(7)第六行代码sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容
server.sendmail(from_addr, to_addr, msg.as_string())
from_addr:邮件发送地址,就是上面的username
to_addr:邮件收件人地址
msg.as_string():为一个字符串类型
(8)最后一行代码,quit是“退出”的意思,就是退出服务器
# smtplib 用于邮件的发信动作
import smtplib
# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'
# 收信方邮箱
to_addr = 'xxx@qq.com'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
2. eamil模块
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
MIMEText()方法需要输入三个参数:文本内容,文本类型和文本编码 MIMEText(msg,type,chartset) msg:文本内容,可自定义 type:文本类型,默认为plain(纯文本) chartset:文本编码,中文为“utf-8”
3.梳理发邮件的代码结构
1、导入模块:
smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
email 用于构建邮件内容
2|定义变量:
发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'
收信方邮箱
to_addr = 'xxx@qq.com'
发信服务器
smtp_server = 'smtp.qq.com'
邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('send by python','plain','utf-8')
3、使用方法:
开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
登录发信邮箱
server.login(from_addr, password)
发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
关闭服务器
server.quit()