163邮箱
163邮箱不太稳定,所以Demo中只发送文本信息。
图片、附件使用QQ邮箱发送。
import smtplib
# 163邮箱的服务器
host = 'smtp.163.com'
# 端口
port = 465
# 发件人的邮箱
senderEmail = 'Mr_Qian_Ives@163.com'
# 发件人邮箱的授权码(自己百度QQ邮箱授权码,教程满天飞)
password = 'xxxxx'
# 发件人的称呼
name = "钱先生"
# 拼接昵称 钱先生 <Mr_Qian_Ives@163.com>
name = name + " <" + senderEmail + ">"
# 收件人的邮箱
receivers = ['1356227919@qq.com', '990509820@qq.com']
# 邮件标题
title = '标题'
# 邮件内容
info = '正文'
# 拼接发送的内容
msg = '\n'.join(['From: {}'.format(name), 'Subject: {}'.format(title), '', info])
# 发送的邮件使用加密形式
try:
smtp = smtplib.SMTP_SSL(host=host, port=port)
# 登录账号
res = smtp.login(user=senderEmail, password=password)
# 发送邮件
smtp.sendmail(from_addr=senderEmail, to_addrs=receivers, msg=msg.encode())
# 退出
smtp.quit()
print('发送成功')
except:
print('发送失败')
QQ邮箱(邮件附带附件、html、图片)
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
# qq邮箱的服务器
host = 'smtp.qq.com'
# 端口
post = 465
# 发件人的邮箱
senderEmail = '1356227919@qq.com'
# 发件人邮箱的授权码(自己百度QQ邮箱授权码,教程满天飞)
password = 'xxxx'
# 发件人的称呼
name = "钱先生"
# 拼接昵称 钱先生 <1356227919@qq.com>
name = name + " <" + senderEmail + ">"
# 收件人的邮箱
receivers = ['990509820@qq.com']
# 邮件标题
title = '标题'
# 邮件正文
info = "正文"
# related类型,把其它内容以内嵌资源的方式存储在邮件中
message = MIMEMultipart('related')
# 设置发件人的信息
message['From'] = Header(name, 'utf-8')
# 设置邮件标题
message['Subject'] = Header(title, 'utf-8')
# html引入图片
# alternative类型,超文本内容
alt = MIMEMultipart('alternative')
# msgAlternative加入message
message.attach(alt)
# html代码,使用img标签引入照片,照片的id在下方。
html = """
<p>""" + info + """</p>
<p><img src="cid:image1"></p>
"""
# 把html代码加入alt
alt.attach(MIMEText(html, 'html', 'utf-8'))
# html中图片的路径
bgPath = "/Users/apple/Downloads/蓝牙下载/Screenshot_20201124-111814_WeChat.jpg"
# 读取图片
mim = MIMEImage(open(bgPath, 'rb').read())
# 设置图片的ID,HTML文本中引用该ID
mim.add_header('Content-ID', '<image1>')
# mim加入message
message.attach(mim)
# 上传附件
# 上传附件的路径
upPath = "/Users/apple/PycharmProjects/pythonTest/SMTP/123.txt"
# 上传附件的名字
upPathName = os.path.basename(upPath);
# 打开文件
att1 = MIMEText(open(upPath, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的'upPathName',可以任意写,写什么,邮件中附件的名字就显示什么名字。
att1.add_header("Content-Disposition", "attachment", filename=("utf-8", "", upPathName))
# 添加附件
message.attach(att1)
# 发送的邮件使用加密形式
try:
smtp = smtplib.SMTP_SSL(host=host, port=post)
# 登录账号
res = smtp.login(user=senderEmail, password=password)
# 发送邮件
smtp.sendmail(from_addr=senderEmail, to_addrs=receivers, msg=message.as_string())
# 退出
smtp.quit()
print('发送成功')
except:
print('发送失败')