# coding:utf8 import smtplib from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage # 导入图片附件用的库 con = smtplib.SMTP_SSL('smtp.163.com',465) # 连接邮箱服务器 con.login('123456@163.com','邮箱登陆授权码') # 登陆邮箱账号 msg = MIMEMultipart() # 准备数据 sub = Header('邮件标题','utf8').encode() # 填写邮件标题和编码 msg['Subject'] = sub msg['From'] = '123456@163.com <123456@163.com>' # 设置邮件头部发件人信息 msg['To'] = 'xxxx@163.com;xxxx@qq.com' # 设置设置一个头部收件人信息,这边不能为列表变量 image_data = open('1.jpg','rb').read() # 以二进制的形式读取图片文件 image_data2 = open('1.jpg','rb').read() # 以二进制的形式读取图片文件 # image1 = MIMEImage(这里给一个图片的二进制数据) image1 = MIMEImage(image_data) # 把二进制图片数据变量给到MIMEImage()参数里面 image2 = MIMEImage(image_data2) # 把二进制图片数据变量给到MIMEImage()参数里面 image1['Content-Disposition'] = 'attachment; filename="meinv.jpg"' # 设置附件名称以及附件格 # 名字不能用中文 msg.attach(image1) # 把邮件头部和邮件内容关联在一起,附件 image2.add_header('Content-ID','<meinvwww>') # 图片需要加载到邮件内容,先声明一个图片id ,meinvwww,做这一步之前,一样要和图片附件一样 msg.attach( image2) # 把邮件头部和邮件内容关联在一起,图片正文内容 # 先读取图片文件的二进制数据流 htmltext = """ <h3>我是一个3号大小字体的邮件正文标题标题</h3> <p>我是邮件内容,在html里面一对p标签就是一段内容。</p> <p>比如说现在这段文字,就是用的第2对p标签,所以我是在第2段。</p> <img src='cid:meinvwww'> <a href="http://www.heisiwu.com" target="_blank">点击我可以跳转到黑丝屋图片网站</a> """ # 编辑html内容。 把image2.add_header中声明的Content-ID meinvwww作为cid:的值。 html = MIMEText(htmltext,'html','utf8') msg.attach(html) # 把邮件头部和邮件内容关联在一起,正文html内容 to2 = ['xxxx@139.com','xxxx@qq.com'] con.sendmail('123456@163.com',to2,msg.as_string()) # 设置发件人账号和收件人账号 con.quit() # 断开邮箱服务器连接,退出邮件服务器。 # 163邮箱测试没有问题,QQ邮箱测试把图片隐藏了,需要手动点击显示,139邮箱没问题,全部显示。