python---网络之邮件发送

在发送邮件之前需要先设置邮件开启了SMTP等功能,对于163还需要获取授权码

python---网络之邮件发送python---网络之邮件发送这里设置保存修改

python---网络之邮件发送这里获取授权码

完整封装发送邮件类

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr,formataddr class SendEmail:
#设置基本信息,包括发件人,发件人密码,收件人邮箱,以及发件箱服务器地址
#发送方
Send_Email = "18xxxxxx@sina.cn"
#发送方密码
Send_Pwd = "xxxxxx"#对于163这里就不是密码,而是授权码
#接收方
Recv_Email = "xxxx@163.com" #设置发件方服务器地址
SMTP_Server = 'smtp.sina.cn'
#设置发件方服务器端口
SMTP_Ser_Port= def __int__(self):
pass @classmethod
def _format_address(cls,text):
#按照空格解析 发件人发送新浪信 <xxxx@sina.cn>
name, address = parseaddr(text)
return formataddr((Header(name, "utf-8").encode(), address))
#注意formataddr是元组 @classmethod
def send_email_text(cls):
# 第一个参数:邮件正文
# 第二个参数:邮件类型 纯文本
# 第三个参数:编码
msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8") #这里注意了,大多数错误出在这里,当直接使用Header('xxx','utf-8')时会出错,需要进行解析,重组
#=?utf-?b?5p2l6IeqMTYz55qE5LiA5bCB6YKu5Lu2?= <xxxx@.com>
msg["From"] = SendEmail._format_address("发件人发送新浪信 <%s>" % SendEmail.Send_Email)#预留空格,在昵称和地址间
msg["To"] = SendEmail._format_address("收件人由163接收 <%s>"%SendEmail.Recv_Email)
msg["Subject"] = Header("测试邮箱功能", "utf-8").encode()#主题 try:
server = smtplib.SMTP(SendEmail.SMTP_Server, SendEmail.SMTP_Ser_Port) server.login(SendEmail.Send_Email, SendEmail.Send_Pwd)
# 登录smtp服务器
server.sendmail(SendEmail.Send_Email, [SendEmail.Recv_Email], msg.as_string())
# 发送邮件
server.quit()
print("邮件发送成功")
except Exception as e:
print(e)
print("邮件发送失败") if __name__ =="__main__":
SendEmail.send_email_text()
上一篇:LeetCode 53. 最大子序和 (java)


下一篇:C++ | 函数模板