简介
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
import smtplib
smtp = smtplib.SMTP()
smtp.connect(smtpserver, port)
参数说明:
- host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:网易163邮箱'smtp.163.com',这个是可选参数。
- port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。
Python SMTP对象使用sendmail方法发送邮件,语法如下:
smtp.sendmail(sender, receiver, msg.as_string())
参数说明:
- sender 邮件发送人
- receiver 邮件接收人
- msg 邮件信息
实例一
python中的类库中,python自带email模块。
在email模块中,我们也可以email类库实现对邮件的读取,和邮件的发送等功能
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '邮件发送邮箱'
receiver = '邮件接收邮箱'
# receiver = ['xxx@163.com', 'xxx@qq.com'] ## 多个邮件接收人
subject = '邮件主题'
smtpserver = 'smtp.163.com' # 服务器地址
username = '邮箱用户' # 邮箱用户
password = 'xxx' # 这里是邮箱授权码不是密码
message = '邮件内容'
msg = MIMEText(message, 'plain', 'utf-8') # 邮件内容
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = ‘邮件发送人’
msg['To'] = 'xxx@qq.com' # 邮件接收人
# msg['To'] = 'xxx@163.com, xxx@qq.com'
try:
smtp = smtplib.SMTP()
smtp.connect(smtpserver, port=25)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print('success')
except Exception as e:
print(e)
如何获取授权码?进入邮箱主页,然后进入设置主页,左下角客户端授权,即可开启授权功能,并获取授权码
实例二
发送带有链接的邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '邮件发送邮箱'
receiver = '邮件接收邮箱'
# receiver = ['xxx@163.com', 'xxx@qq.com'] ## 多个邮件接收人
subject = '邮件主题'
smtpserver = 'smtp.163.com' # 服务器地址
username = '邮箱用户' # 邮箱用户
password = 'xxx' # 这里是邮箱授权码不是密码
message = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com">这是一个baidu链接</a></p>
"""
msg = MIMEText(message, 'plain', 'utf-8') # 邮件内容
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = ‘邮件发送人’
msg['To'] = 'xxx@qq.com' # 邮件接收人
# msg['To'] = 'xxx@163.com, xxx@qq.com'
try:
smtp = smtplib.SMTP()
smtp.connect(smtpserver, port=25)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print('success')
except Exception as e:
print(e)
注意:这里如果你短时间内重复发送邮件,或者邮件内带有敏感信息如链接或者关键词,邮件可能不会发送