700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python基于内置模块smtplib email实现163邮箱发送邮件(附完整代码 可直接使用)

python基于内置模块smtplib email实现163邮箱发送邮件(附完整代码 可直接使用)

时间:2022-05-17 16:44:38

相关推荐

python基于内置模块smtplib email实现163邮箱发送邮件(附完整代码 可直接使用)

一、获取发送者163邮箱授权密码

第一步 登录邮箱

/

第二步 点击右上角切换回旧版

...新版实在没找到在哪

第三步打开POP3/SMTP/IMAP设置

第四步 开启POP3/SMTP服务

第五步 拿到授权密码

第六步 记录服务器地址

在页面的最下方

二、编码

1、导入库

import smtplib# 导入smplipfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.utils import formataddrfrom email.mime.multipart import MIMEMultipart

2、__init__.py

def __init__(self, recipient: str, sender: str = sender, password: str = password,serverAddress: str = serverAddress):"""recipient: 接收者邮箱sender: 发送者邮箱password: 发送者授权码(写刚才拿到的授权码)serverAddress: 服务器地址(写刚才拿到的服务器地址)"""self.sender = sender # 发送者邮箱self.password = password # 授权码self.recipient = recipient # 接收者邮箱self.serverAddress = serverAddress # 服务器地址

3、编辑邮件内容

@staticmethoddef message(title: str, text: str, sender: str, recipient: str, types: str = "plain", name: str = None,file: str = None):"""title: 邮件标题text: 邮件正文types: 文本格式 plain(纯文本)/html(html代码)sender: 发送者邮箱recipient: 接收者邮箱name: 自定义邮件名称file: 附件路径"""# 判断有没有传入文件if file:message = MIMEMultipart()# 这里的三个参数:第一个为文本内容,第二个文本格式 plain(纯文本)/html(html代码),第三个 utf-8 设置编码message.attach(MIMEText(text, types, 'utf-8'))att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = f'attachment; filename="{file}"' # 设置文件名称message.attach(att1)else:# 这里的三个参数:第一个为文本内容,第二个文本格式 plain(纯文本)/html(html代码),第三个 utf-8 设置编码message = MIMEText(text, types, 'utf-8')message['To'] = Header(recipient) # 接收者message['From'] = Header(formataddr((name, sender), "utf-8")) # 接收者message['Subject'] = Header(title, 'utf-8') # 设置标题return message

4、建立连接,发送邮件

def send(self, title: str, text: str, types: str = "plain", name: str = None, file: str = None, ):"""title: 邮件标题text: 邮件正文types: 文本格式 plain(纯文本)/html(html代码)name : 自定义邮件名称file: 附件路径"""try:print("邮件发送中..")mtpObj = smtplib.SMTP_SSL(self.serverAddress)# 建立连接mtpObj.connect(self.serverAddress, 587)# 登录--发送者账号和口令mtpObj.login(self.sender, self.password)# 调用函数编辑发送信息message = self.message(title, text, self.sender, self.recipient, types=types, name=name,file=file, )# 发送邮件mtpObj.sendmail(self.sender, self.recipient, message.as_string())print("邮件发送成功")mtpObj.quit()except smtplib.SMTPException:print("无法发送邮件")

5、实例化

if __name__ == '__main__':# 实例化对象,传入接收者邮箱参数recipientp1 = sendEmail(recipient="XXXX@")title = "这是一条来自地狱的邀请书,快来看看吧~"# 如果文本格式选html text需要传html代码,比如:<p>我爱中国</p>text = "像你这样的新生命体竟然还能在地球上活这么多年!不得不佩服佩服天朝,林大了什么鸟都有啊!"p1.send(title=title, text=text, name="地狱邀请书", file='test.txt')"""send参数说明:title: 必传 邮件标题text: 必传 邮件正文types: 选传 文本格式 plain(纯文本)/html(html代码) 默认为plainname : 选传 自定义邮件名称file: 选传 附件路径"""

完整代码

代码已经封装好,基本功能已经实现,完成第一部分的内容后,根据参数说明传入参数即可使用,有特殊需要的(比如html格式里插入图片、上传多个附件等)可以自己再研究一下。/python/python-email.html

import smtplib# 导入smplipfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.utils import formataddrfrom email.mime.multipart import MIMEMultipartclass sendEmail:def __init__(self, recipient: str, sender: str = "XXX@", password: str = "ZZZZZZZZZ",serverAddress: str = ''):"""recipient: 接收者邮箱sender: 发送者邮箱password: 发送者授权码serverAddress: 服务器地址"""self.sender = sender # 发送者邮箱self.password = password # 授权码self.recipient = recipient # 接收者邮箱self.serverAddress = serverAddress # 服务器地址@staticmethoddef message(title: str, text: str, sender: str, recipient: str, types: str = "plain", name: str = None,file: str = None):"""title: 邮件标题text: 邮件正文types: 文本格式 plain(纯文本)/html(html代码)sender: 发送者邮箱recipient: 接收者邮箱name: 自定义邮件名称file: 附件路径"""if file:message = MIMEMultipart()# 这里的三个参数:第一个为文本内容,第二个文本格式 plain(纯文本)/html(html代码),第三个 utf-8 设置编码message.attach(MIMEText(text, types, 'utf-8'))att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = f'attachment; filename="{file}"' # 设置文件名称message.attach(att1)else:# 这里的三个参数:第一个为文本内容,第二个文本格式 plain(纯文本)/html(html代码),第三个 utf-8 设置编码message = MIMEText(text, types, 'utf-8')message['To'] = Header(recipient) # 接收者message['From'] = Header(formataddr((name, sender), "utf-8")) # 接收者message['Subject'] = Header(title, 'utf-8') # 设置标题return messagedef send(self, title: str, text: str, types: str = "plain", name: str = None, file: str = None, ):"""title: 邮件标题text: 邮件正文types: 文本格式 plain(纯文本)/html(html代码)name : 自定义邮件名称file: 附件路径"""try:print("邮件发送中..")mtpObj = smtplib.SMTP_SSL(self.serverAddress)# 建立连接mtpObj.connect(self.serverAddress, 587)# 登录--发送者账号和口令mtpObj.login(self.sender, self.password)# 设置发送信息message = self.message(title, text, self.sender, self.recipient, types=types, name=name,file=file, )# 发送邮件mtpObj.sendmail(self.sender, self.recipient, message.as_string())print("邮件发送成功")mtpObj.quit()except smtplib.SMTPException:print("无法发送邮件")if __name__ == '__main__':# 实例化对象,传入接收者邮箱参数recipientp1 = sendEmail(recipient="xxxxx@")title = "这是一条来自地狱的邀请书,快来看看吧~"text = "像你这样的新生命体竟然还能在地球上活这么多年!不得不佩服佩服天朝,林大了什么鸟都有啊!"p1.send(title=title, text=text, name="地狱邀请书")"""send参数说明:title: 必传 邮件标题text: 必传 邮件正文types: 选传 文本格式 plain(纯文本)/html(html代码) 默认为plainname : 选传 自定义邮件名称file: 选传 附件路径"""

Everything is goingsmoothly.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。