欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python自动发送邮件--smtplib模块

程序员文章站 2022-07-10 15:24:38
...
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage

account='[email protected]'  #发件人
pwd = '*******'    #第三方授权码,需登录qq mail web页,开通设置。
to = ['[email protected]','[email protected]','[email protected]'] # 发送给多个收件人
host='smtp.qq.com'      #主机
atta_path = r'C:\Users\Administrator\Desktop\testdata.txt'  #附件路径与名称
name='要展示的文件名.txt'      #附件显示的名称
img_path = r'C:\Users\Administrator\Desktop\dog.jpg'    #显示在正文中的图片

# 这是正文显示部分,其中img标签中的src的cid:0,这个0与下文的content-ID对应。

content='''
<html><body><h3>
Project:</h3>  <p>mobile test</p>
<h3>Tester:</h3> <p>fish</p>
<h3>Date:</h3> <p>2019/12/12</p>
<h3>Result:</h3> <p>Pass</p>
<p>For morn details,you can check <a href= 'https://www.baidu.com'>Test Result</a></p>
<img src='cid:0' alt = 'picture'>
</body></html>
'''
def sendmail():
    
    ret = True
    try:
        msg = MIMEMultipart()
        msg['Subject'] = 'Test'
        msg['From'] = account
        msg['To'] = ';'.join(to)
        
        #将图片显示在邮件正文中
        fp=open(img_path,'rb')
        img= MIMEImage(fp.read())
        img.add_header('Content-ID', '0')
        msg.attach(img)
        
        #邮件中显示正文
        part_text = MIMEText(content,'html','UTF-8')
        msg.attach(part_text)
        
        
        #这是附件部分,不同类型的附件,只需修改名称、位置、要显示的名字
        part_att = MIMEApplication(open(atta_path,'rb').read())
        part_att.add_header('Content-Disposition', 'attachment', filename=name)
        msg.attach(part_att)
        
        #实例化一个SMTP的对象,然后登录、发送邮件
        s = smtplib.SMTP(host,timeout= 30)
        s.login(account,pwd)
        s.sendmail(account,to,msg.as_string())
        s.close()
    except Exception as e:
        ret = False
        resaon = str(e)
    return ret
        
ret = sendmail()

if ret:
    print('send successfully')
else:
    print('Error: send failed: ',reason)

如上的代码,可实现一个简单的邮件自动发送,且不会显示在垃圾箱中。

相关标签: Python