Python SMTP 发送HTML邮件(多个邮箱轮流发送)
前言
因为各大邮箱都对同一ip有一定时间内邮件发送数量的限制,因此可采用不同邮箱混合轮流发送邮件来缓解此限制,这里提供了两个邮箱轮流发送的源代码,可继续增加elif结构来增加不同邮箱。
代码(懂原理仅需代码版)
代码只需要更改mail_user和mail_pass即可使用,如果不需要输出详细信息可将41行注释掉。
#!python3
#coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
n = 0
#content应该是一个HTML内容
def send_mail(from_name = '发件人名称', to_name = '收件人名称', to_address = '收件人地址', head_content = '标题', content = '内容'):
global n
#此处可以设置多个elif结构来增加多个邮箱,此处以QQ邮箱和189邮箱为例
if n%2 == 0:
mail_user = "adress@qq.com"#QQ邮箱
mail_pass = "授权码"#到QQ邮箱里去申请
mail_host = "smtp.qq.com"#邮箱服务器
mail_port = 465#邮箱服务器的端口
mail_name = 'QQ'
else:
mail_user = 'adress@189.cn'#189邮箱
mail_pass = "password"#189邮箱可以直接用密码
mail_host = "smtp.189.cn"
mail_port = 465
mail_name = '189'
message = MIMEMultipart('related')
message['Subject'] = Header(head_content, 'utf-8')
message['From'] = Header(from_name + '<' + mail_user + '>', 'utf-8')
message['To'] = Header(to_name, 'utf-8')
msgAlternative = MIMEMultipart('alternative')
message.attach(msgAlternative)
msgAlternative.attach(MIMEText(content, 'html', 'utf-8'))
smtpobj = smtplib.SMTP_SSL(host = mail_host, port = mail_port)#连接到邮箱服务器
smtpobj.set_debuglevel(1)#需要输出详细信息就保留这句话
smtpobj.login(mail_user, mail_pass)#登录邮箱
smtpobj.sendmail(mail_user, to_address, message.as_string())#发送邮件
print(mail_name + "邮件发送成功")
smtpobj.quit()
n += 1
STMP是什么(STMP教程)
SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。
使用python发送邮件十分方便,smtplib和email均为python的自带库,因此直接import即可。