python中怎么发送邮件
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关python中怎么发送邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一种:正常发送邮件,也就是同步发送邮件#!/us
千家信息网最后更新 2025年12月02日python中怎么发送邮件
这篇文章将为大家详细讲解有关python中怎么发送邮件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
第一种:正常发送邮件,也就是同步发送邮件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/8/14 10:14
# @Author : Andrew
# @Site :
# @File : send_mail.py
# @Software: PyCharm
from email.mime.text import MIMEText
import smtplib
from email.header import Header
from email.utils import parseaddr, formataddr # 设置编码格式
from email.mime.multipart import MIMEMultipart
class SendMail:
def __init__(self):
# 定义email的地址,口令和SMTP服务器地址
self.from_addr = '发送者邮箱'
self.password = "pass" # 注意此处输入的密码是自己设置的协议密码
self.to_addr = '*@126.com'
self.smtp_server = 'smtp.163.com'
def format_addr(self, s):
# 将用户名编码设置成UTF-8
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def msg_parse(self):
# 定义邮件本身内容
msg = MIMEMultipart()
msg['From'] = self.format_addr(f'发送者<{self.from_addr}>')
msg['To'] = self.format_addr(f'接收者<{self.to_addr}>')
msg['Subject'] = Header('hhh,爬虫又出错了,请及时修复', 'utf-8').encode()
# 定义邮件正文
msg.attach(MIMEText('使用python发来的邮件3', 'plain', 'utf-8'))
# 加附件
# with open(r'C:\Users\Administrator\Desktop\test\test0.jpg', 'rb') as f:
# # 设置附件的MIME和文件名,这里是jpg类型,可以换png或其他类型:
# mime = MIMEBase('image', 'jpg', filename='test0.jpg')
# mime.add_header('Content-Disposition', 'attchment', filename='test0.jpg')
# mime.add_header('Content-ID', '<0>')
# mime.add_header('X-Attachment-ID', '0')
# mime.set_payload(f.read())
# encoders.encode_base64(mime)
# msg.attach(mime)
server = smtplib.SMTP_SSL(self.smtp_server, 465)
# server.set_debuglevel(1)
server.login(self.from_addr, self.password)
server.sendmail(self.from_addr, [self.to_addr], msg.as_string())
server.quit()
if __name__ == '__main__':
SendMail().msg_parse()
第二种:使用异步库发送邮件
注意事项:这种方式需要使用异步库 asyncio, 需要使用时间循环,也就是get_event_loop, 也就是 main 里面写的代码,如果是你重开线程使用异步发送邮件的话,这个会出问题。需要使用 new_event_loop 记住下面这句话:
get_event_loop() 方法仅在同样的线程中生效,如果在一个新线程中,应该用 new_event_loop() 来获取新的 loop,并通过 set_event_loop(loop) 来将其设为该线程下的 loop。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/8/14 10:14
# @Author : Andrew
# @Site :
# @File : send_mail.py
# @Software: PyCharm
import asyncio
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
from email.header import Header
import aiosmtplib
import logging
class SendMail:
def __init__(self):
# 定义email的地址,口令和SMTP服务器地址
self.from_addr = '*@163.com'
self.password = "pass" # 注意此处输入的密码是自己设置的协议密码
self.to_addr = '*@126.com'
self.smtp_server = 'smtp.163.com'
def format_addr(self, s): # 格式化地址 也方便发送中文
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
async def sendemail(self):
title = '亲爱的%s,您好:
' % (
self.to_addr, self.to_addr)
tail = '爬虫出错了,请及时修复错误'
html = title + tail
msg = MIMEText(html, 'html', 'utf-8')
msg['From'] = self.format_addr('发送者 <%s>' % self.from_addr)
msg['To'] = self.format_addr('亲爱的程序员 <%s>' % self.to_addr)
msg['Subject'] = Header('修复bug', 'utf-8').encode()
try:
async with aiosmtplib.SMTP(hostname=self.smtp_server, port=465, use_tls=True) as smtp:
await smtp.login(self.from_addr, self.password)
await smtp.send_message(msg)
except aiosmtplib.SMTPException as e:
logging.error('sendemail:%s' % e)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(SendMail().sendemail())
第三种:使用 yagmail 库发送邮件,三行代码实现发送邮件
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/8/14 10:14
# @Author : Andrew
# @Site :
# @File : send_mail.py
# @Software: PyCharm
import yagmail
def send_mail(content):
yag = yagmail.SMTP(user='*@163.com', password='pass', host='smtp.163.com')
contents = [content] # 正文内容
yag.send('*@126.com', '主题:修复', contents)关于python中怎么发送邮件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
邮件
地址
内容
密码
线程
也就是
发送者
utf-8
亲爱
代码
口令
文章
更多
服务器
格式
正文
爬虫
知识
篇文章
类型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
超级群英传服务器
公众号开发免费服务器
荷兰发包服务器渠道
西电网络安全研究生怎么样
虹口区领用软件开发市场
服务器安装机
索菲亚衣柜软件开发
网络安全与信息化建设三同步
网络安全周30题
软件开发战队名称
激活工具服务器打不开
么么哒网络技术有限公司
wps武汉软件开发薪资
崇明区专业软件开发诚信服务
wifi网络安全性选择
布谷互联网科技有限公司
查询数据库表名中含有数字的表
陕西网络技术服务
安卓软件开发包下载软件
人脸年龄数据库
福建搭建云空间云服务器
查询保存数据库文件sql
戴尔1u服务器推荐
网络安全乡镇社区
福州墨者互联网科技
互联网科技公司流量
山东信创云服务器
手机应用软件开发哪家专业
高一网络安全班会活动纪实
计算机数据库前提