发送邮件需要用到smtplib模块,用于实现SMTP协议
标准库还提供了email模块来帮助我们构造邮件格式
smtp是一组由源地址到目的地址传送邮件的规则,用于控制信件的中转方式。python的smtplib提供了一种发送电子邮件的方便途径,它对smtp协议进行了简单的封装。
创建smtp对象的语法为:
smtpObj = smtplib.SMTP([host [, port [, local_hostname]]])
参数说明:
host:SMTP主机,是可选参数。可以指定主机的ip地址或者域名。
port:如果你提供了host参数,那就需要指定smtp服务使用的端口号,一般情况下端口号为25,SSL加密则是465
local_hostname: 如果smtp在本机上,那就只需要指定服务器的地址为localhost接口。
使用smtp对象的sendmail方法来发送邮件,语法如下
SMTP.sendmail(from_address, to_address, msg[, mail_options, rcpt_options]
参数说明:
from_address:邮件发送者地址
to_address:字符串列表,邮件发送地址
msg:发送消息,一般使用字符串
举个例子,
代码里面的那个邮箱用户名和密码大家就自己去QQ邮箱那里开通smtp服务并且自己设置那个发送服务器地址吧。用自己的账号密码。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = 'xxx@qq.com'
password = 'xxxxx'
#收件人无论是否只有一个收件人都必须是列表
receiver = ['re@qq.com', ]
#邮件正文
message = MIMEText('使用Python发送邮件', 'plain', 'utf-8')
#发件人显示的名字
message['From'] = Header('Python邮件', 'utf-8')
#收件人显示的名字
message['To'] = Header('邮件', 'utf-8')
#邮件标题
message['Subject'] = 'Python SMTP 发送邮件'
try:
#使用qq企业邮箱服务器发送
smtp = smtplib.SMTP_SSL('smtp.qiye.aliyun.com', 465)#自己修改这里
#登录
smtp.login(sender, password)
smtp.sendmail(sender, receiver, message.as_string())
print('邮件已发送!')
except smtplib.SMTPException as e:
x = e.args[1]
a = x.decode('gbk')
print('发送失败!', a)
至此,邮件发送就完成啦