我的Python自学之路Python语言与信息数据获取和机器学习Python 运维

使用Python发送邮件

2017-02-08  本文已影响0人  aialin

背景

公司内网有个论坛,各种公司的前沿消息都会有人在讨论。一忙起来,经常忘记逛论坛,所以写了个爬虫,爬取论坛前10页帖子,将回复量较多的帖子通过邮件发送给自己,这样,在没时间逛论坛的时候,也能关注到一些相关消息。

基于以上背景,涉及到了python发送邮件,写下这篇文章作为对相关知识的复习与巩固。


相关模块介绍

smtpObj = smtplib.SMTP()
smtpObj.connect('hostname:port')
smtpObj.login(user,password)
smtpObj.sendmail(from,to,msg)
smtpObj.quit()

email模块是一个用来管理email消息的库,包含MIME和其他基于RFC2822的消息文档。它并不负责处理发送邮件。

        from email.mime.text import MIMEText
        from email.header import Header

        mes = MIMEText(body, 'plain', 'utf-8') # 正文
        mes['From'] = Header('xxx@xxx.com','utf-8') # 发件人
        mes['To'] = Header('xxx@xxx.com','utf-8') # 收件人
        mes['Cc'] = Header('xxx@xxx.com','utf-8') # 抄送人
        mes['Subject'] = Header(subject, 'utf-8')  # 主题
  1. 创建一个html文本消息
        from email.mime.text import MIMEText
        from email.header import Header

        mes = MIMEText(body, 'html', 'utf-8') # body按照html格式写
        mes['From'] = Header('xxx@xxx.com','utf-8') # 发件人
        mes['To'] = Header('xxx@xxx.com','utf-8') # 收件人
        mes['Cc'] = Header('xxx@xxx.com','utf-8') # 抄送人
        mes['Subject'] = Header(subject, 'utf-8')  # 主题
        msg['date']='xxxx-xx-xx' # 
3. 创建带附件邮件
        from email.mime.text import MIMEText
        from email.mime.multipart import MIMEMultipart
        
        #创建一个带附件的实例
        msg = MIMEMultipart()

        #构造附件1
        att1 = MIMEText(open('d:\\123.rar', 'rb').read(), 'base64', 'gb2312')
        att1["Content-Type"] = 'application/octet-stream'
        att1["Content-Disposition"] = 'attachment; filename="123.doc"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字
        msg.attach(att1)

        #构造附件2
        att2 = MIMEText(open('d:\\123.txt', 'rb').read(), 'base64', 'gb2312')
        att2["Content-Type"] = 'application/octet-stream'
        att2["Content-Disposition"] = 'attachment; filename="123.txt"'
        msg.attach(att2)

        #加邮件头
        msg['to'] = 'YYY@YYY.com'
        msg['from'] = 'XXX@XXX.com'
        msg['subject'] = 'hello world'
  1. 如果想发送一个带图片附件的邮件,同时图片还显示在正文中
  2. 按照3.的方式(图片用MIMEImage)插入图片附件hello.jpg
  3. 按照2.的方式,发送一个html文件,在html中插入img标签,src为图片的路径
![](cid:hello.jpg)
上一篇下一篇

猜你喜欢

热点阅读