ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

第十二天-邮件发送

2026/9/21 20:44:48 拓冰建站 浏览量
第十二天-邮件发送

目录

发送邮件的流程

邮件的发送协议

smtplib模块

email包

demo

发送html邮箱

发送带附件的邮箱

发送定时邮件schedule模块


发送邮件的流程

邮件的发送协议

  • smtp是邮件的发送协议
  • pop3是邮件的接受协议
  • 协议就是一种规则,已经被底层网络封装好了,无需关心他的具体规则,直接使用上层工具即可

smtplib模块

python自带无需安装

import smtplib

#创建协议对象

smtpObj=smtplib.SMTP()

#创建链接,25端口号

smtpObj.connect(smtp服务器地址,25)

#登录验证

smtpObj.login(mail_user,mail_pass)

#发送邮件

smtpObj.sendmail(sender,receivers,message)

email包

demo

1. 需要注意内容:发生邮箱需要开通smtp与pop3的访问许可,否则发生不出去,每个邮箱开通的方法自行百度,下方只是只是演示了qq邮箱的

2.需要授权码和密码

3.有些邮箱开通可能会收费

# coding:utf-8import smtplibfrom email.mime.text import MIMEText
from email.header import Header#声明使用邮箱协议,使用qq邮箱
mail_host="smtp.qq.com"
mail_user="2211910447@qq.com"
#qq邮箱授权码获取:1.需要开通smtp>(qq邮箱设置>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务>开启获取授权码)
mail_pass="goxcqlvjgnggdjii"#定义发送者
sender="2211910447@qq.com"
#定义接受者
receivers=["15837174334@163.com"]#第一个参数邮件内容,第二个参数:文件类型:plain 普通邮箱 第三个参数:编码
#message=MIMEText("标题-测试","plain","utf-8")
message=MIMEText("<p style='color:red'>标题-测试</p>","html","utf-8")
#定义发送者
message["From"]=Header(sender)
#定义发送内容
message["Subject"]=Header("邮件标题","utf-8")
print("发送邮件内容:",message.as_string())
try:smtpobj=smtplib.SMTP()smtpobj.connect(mail_host,25)smtpobj.login(mail_user,mail_pass)smtpobj.sendmail(sender,receivers,message.as_string())
except smtplib.SMTPException as e:print("error:",e)

发送html邮箱

.

message=MIMEText("<p style='color:red'>标题-测试</p>","html","utf-8")

发送带附件的邮箱

# coding:utf-8import smtplibfrom email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart#声明使用邮箱协议,使用qq邮箱
mail_host="smtp.qq.com"
mail_user="xxxx@qq.com"
#qq邮箱授权码获取:1.需要开通smtp>(qq邮箱设置>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务>开启获取授权码)
mail_pass=""#定义发送者
sender="xxxxx@qq.com"
#定义接受者
receivers=["xxxxx@163.com"]#第一个参数邮件内容,第二个参数:文件类型:plain 普通邮箱 第三个参数:编码
#message=MIMEText("标题-测试","plain","utf-8")
message=MIMEMultipart()
#定义发送者
message["From"]=Header(sender)
#定义发送内容
message["Subject"]=Header("邮件标题","utf-8")#发送附件
attr=MIMEText(open("send_email.py","rb").read(),"base64","utf-8")
attr["Content-Type"]= "application/octet-stream"
attr["Content-Disposition"]= "attachment;filename='send_email.py'"
message.attach(attr)
message.attach(MIMEText("<p style='color:red'>标题-测试</p>","html","utf-8"))print("发送邮件内容:",message.as_string())
try:smtpobj=smtplib.SMTP()smtpobj.connect(mail_host,25)smtpobj.login(mail_user,mail_pass)smtpobj.sendmail(sender,receivers,message.as_string())
except smtplib.SMTPException as e:print("error:",e)

发送定时邮件schedule模块

1. 在特定时间执行的一些内容;

2.安装  pip install schedule

# coding:utf-8import smtplib
import timeimport schedulefrom email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipartdef send():#发送邮件代码...if __name__ == '__main__':schedule.every(10).seconds.do(send)while 1:schedule.run_pending()time.sleep(1)