网上参考了很多今年发的相关文章,都是失败的。故分享下相关代码。
首先在163邮箱里开启IMAP/SMTP 服务,获取授权码。
def send_mail(
sender_email="su****@163.com",
sender_password="授权码",
receiver_email="9*****6@qq.com"):
"""
发送邮件函数
:param sender_email: 发件人邮箱地址
:param sender_password: 授权码
:param receiver_email: 收件人邮箱地址
:return:
"""
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# 创建一个带HTML内容的邮件对象
message = MIMEMultipart("alternative")
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "主题"
# HTML内容
html_content = f"""
<html>
<body>
<p> 正文内容 </p>
<p><img src="cid:image1" alt="image1"></p>
</body>
</html>
"""
# 将HTML内容转换为MIMEText对象
html_part = MIMEText(html_content, "html")
message.attach(html_part)
print("准备读取图片。")
# 读取图片文件(本地图片)
with open( 'output.png', "rb") as image_file:
# 创建一个MIMEImage对象
image = MIMEImage(image_file.read())
# 定义图片的Content-ID,用于在HTML中引用
image.add_header("Content-ID", "<image1>")
# 将图片对象添加到邮件中
message.attach(image)
print("准备连接服务器。")
# 创建SMTP_SSL对象
server = smtplib.SMTP_SSL( 'smtp.163.com', 465)
server.login( sender_email, sender_password )
server.send_message(message) # 发送邮件
# 关闭连接
server.quit()
print("发送完成。")