SMTP发送邮件
简介
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)
注意:这里如果你短时间内重复发送邮件,或者邮件内带有敏感信息如链接或者关键词,邮件可能不会发送