利用python自动发送带附件的邮件

python自动化 专栏收录该内容
2 篇文章 0 订阅

利用python自动发送邮件

说道邮件,必须要了解相关的协议。

简单地说,SMTP管‘发’,POP3/IMAP管‘收’。

    POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。

     而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

    同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。

     明白了协议还必须明白邮件服务器。python发送邮件的整个过程其实就是我利用python登陆我自己的163邮箱,然后用我自己的163邮箱给别人发邮件。当然连接我自己的163就必须用我自己的账号密码来登陆163邮件服务器的某一个端口。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
而如下面代码,python需要首先实例化一个message的容器。然后用smtplib这个模块发送它。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import os
smtpserver = 'smtp.163.com'
smtpport = 465
sender = '*******@163.com'
sender_pwd = input('请输入密码')
rece = '*******@qq.com'
mail_username = ''


# 创建一个带附件的邮件实例
message=MIMEMultipart()
# 编辑邮件的内容

# 往邮件容器中添加内容。这是邮件的主体
mail_title = '我发送的一个图片'
mail_inside = MIMEText(r'这是我程序自动发送的。内含图片','plain','utf-8')
# 邮件的其他属性
message['From'] = sender
message['To'] = rece
message['Subject'] = Header(mail_title,'utf-8')
message.attach(mail_inside)


#构造附件txt附件1
attr1=MIMEText(open(r'D:\houseinformation.txt','rb').read(),'base64','utf-8')
attr1["content_Type"]='application/octet-stream'
attr1["Content-Disposition"] = 'attachment; filename="houseinformation.txt"'  # 表示这是附件,名字是啥
message.attach(attr1)



# 构造图片附件2
att2 = MIMEText(open(r'D:\flower.jpg','rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="flower.jpg"'
message.attach(att2)

#构造html附件
att3 = MIMEText(open('report_test.html', 'rb').read(), 'base64', 'utf-8')
att3["Content-Type"] = 'application/octet-stream'
att3["Content-Disposition"] = 'attachment; filename="report_test.html"'
message.attach(att3)


smtpobj = smtplib.SMTP_SSL(smtpserver, port=smtpport)
smtpobj.login(sender, sender_pwd)
smtpobj.sendmail(sender,rece,message.as_string())
print ('邮件发送成功')
smtpobj.quit()

      需要注意的是。邮件系统都有针对垃圾邮件的策略。所以发送邮件的时候一不小就会被当做垃圾邮件被屏蔽。注意事项有:不能重复发送同一内容;不能高频率的发送邮件;不能发送大量的邮件。。。。。。等等。

    需要交流请联系我。 rwangnqian@126.com

  • 2
    点赞
  • 0
    评论
  • 14
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值