刘珲的博客

导航

关于邮箱发送邮件二之附件及图片

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

# come_from 是自己的邮箱,password是邮箱的授权码
come_from = '2577452716@qq.com'# who 用户是谁 ,相当于用户名。
password = 'jgodszkzfkrqebeb' # 秘钥串 ,相当于密码。

# to_email 是接收的邮箱
to_email = '2435224077@qq.com' # 我要发送给谁

# 邮件服务器
smtp_server = 'smtp.qq.com' #我们自己不搭建了,有免费的还稳定,出了事情都能找服务商, QQ邮箱的服务域名
# 想要在邮件中添加附件。首先需要构造一个MIMEMultipart对象表示邮件整体,然后添加一个MIMEText作为邮件正文,添加一个MIMEBase对象作为附件即可
msg = MIMEMultipart()
# 邮件头部信息
msg['From'] = Header(come_from)
# 发送给谁
msg['To'] = Header(to_email)
# 邮件主题
msg['Subject'] = Header('1908大实训')

# 附件
# 附件第二个参数为格式,默认为纯文本,
# msg.attach(MIMEText('Hello, my friend...', 'plain', 'utf-8'))

# 邮件中正文显示图片
# 我们需要先把图片作为附件,然后在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。
# 显示附件图片需要把第二个参数改为html, img标签src属性为 src="cid:0"
# 图片的第二个参数为html
msg.attach(MIMEText('<html><body><h1>Hello, my friend...</h1>' +
'<p><img src="cid:0"></p>' +
'</body></html>', 'html', 'utf-8'))
with open('D:/tupian/1.png', 'rb') as f: # 打开需要添加的附件
mime = MIMEBase('image', 'png', filename='1.png') # 创建MIMEBase对象,即附件内容
mime.add_header('Content-disposition', 'attachment', filemane='1.png') # 添加必要的头文件
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-ID', '0')
mime.set_payload(f.read()) # 读进附件的内容
encoders.encode_base64(mime) # 用base64编码
msg.attach(mime) # 把附件添加到主体对象中

# 创建实例
server = smtplib.SMTP_SSL(smtp_server)
# QQ邮箱SMTP的端口号是465或587
server.connect(smtp_server, 465)
# 登录邮箱
server.login(come_from, password)
# 发送邮件
server.sendmail(come_from, to_email, msg.as_string())
print("发送完成")
# 退出邮箱
server.quit()

posted on 2020-07-06 23:37  刘珲的博客  阅读(534)  评论(0编辑  收藏  举报