Python 邮件发送之嵌套图片&发送附件

哎呀,马上就要五一小长假了,想想都有点小激动,嘿嘿~约那个妹子出去嗨?
人事:五一,4号,5号在公司加班,全体加班。
我:我TM,WTF? 
怀着悲愤的心情,写下这个邮件发送,没事的时候给她发点垃圾邮件(想想又有点激动……),说干就干。

                                                                        

本节所讲内容:

1.  SMTP 介绍

2.  设置QQ环境

3.  了解MIMEText

4.  发送各种文档和图片,html样式

1.  SMTP 介绍

SMTP(Simple Mail Transfer Protocol):简单邮件传输协议。

SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。 

                      

我们要知道SMTP是发送邮件的协议,Python内置会对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

2.  QQ设置

在这里,我们公司主要用到的还是QQ(有点脱离了时代),所以我主要围绕着QQ进行操作,各位看官瞅瞅。

1.   打开QQ SMTP的步骤,首先点开自己的QQ邮箱,点击设置。

                       

 

2.  再点击账户

                      

 

3.  找到上面pop3/SMTP打开

                      

 

4.  点击开启之后可能要验证一下手机或者密保,当然为了咱们能够使用这个功能小小的验证并不能算什么。

                      

 

4.  验证后,会给你这个pop3授权码,很重要,记下来,以后我们发送邮件能不能成功都需要它。

                        

user :代表的是开通SMTP服务的账号

pwd :代表是你开通之后的授权码(这个就是上面你开通后返回的授权码)

to :接件人

user = '[email protected]'

pwd = 'adafdfasdfdfsadfas'

to = '[email protected]'

3.   python MIMEText操作

 配置好了之后,就开始咱们今天的课程,首先,我们来构造一个最简单的纯文本邮件,来吧,come,baby~,首先我们出场的是MIMEText这个构造基本的邮箱内容。

                                                                 

MIMEText这个是什么?

大白话:构造邮件的正文文本,杠杠滴~

如何构造,请看下方代码:

from email.mime.text import MIMEText

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')

然后,我的数学老师教给我,一个新的方法要想学好就要看底层

     

各位看官肯定注意到构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain',最后要用utf-8编码保证多语言兼容性。

1.    content: 邮件的内容 即为文本内容 定义为字符串即可

2.    plain: 邮件的文本格式普通文本默认设置为plain即可 发送html格式的文本设置为html即可

3.    utf-8: 邮件的编码格式 一般都设置为utf-8

import smtplib
from email.mime.text import MIMEText

#输入相关的内容
from_addr = input("From:")
#输入刚刚的QQ开启pop3 的授权码
password = input('Password:')
#输入发送到的QQ邮箱
toaddr = input('To:')

#发送内容
msg = MIMEText('hello,send by python')
#服务器
smtp_server = 'smtp.qq.com'
#创建一个SMTP实例对象,并25是默认邮件发送端口
server = smtplib.SMTP(smtp_server,25)
#登录SMTP服务器
server.login(from_addr,password)
#发送邮件 第一个参数是发送的地址,第二个是接收地址,第三个是msg然后利用as_string()把MIMEText变成一个str,当然[toaddr] 可以写成一个列表。发送给多个人
server.sendmail(from_addr,toaddr,msg.as_string())
#关闭服务
server.close()

 

    发送结果:                                 

4.  发送各种样式的邮件

上面对于我们来说就是毛毛雨,so,easy。但是我发现,没得主题,没得发件人,没得收件人,一个字:low~,对于我这样十全十美的男人来讲,不可饶恕,怎么办? 盘它~

我们通过发送HTML类型的数据,给上方的邮件进行简单的修饰~

                                                                   

from email.mime.text import MIMEText
from_addr = '[email protected]'
password = 'afdafadfafdsf'
toaddr = '[email protected]'

msg = MIMEText('<html><body><h1>你好</h1>' +
    '<p>send by <a href="http://www.python.org">Python</a>...</p>' +
    '</body></html>', 'html', 'utf-8')
#设置标题一些主题,邮件来自,和邮件发送
msg['Subject'] = '这是风一般的男人的邮件'
msg['From'] = from_addr
msg['To'] = toaddr
smtp_server = 'smtp.qq.com'

import smtplib
#创建一个SMTP实例对象,并25是默认邮件发送端口
server = smtplib.SMTP(smtp_server,25)
#登录SMTP服务器
server.login(from_addr,password)
#发送邮件 第一个参数是发送的地址,第二个是接收地址,第三个是msg然后利用as_string()把MIMEText变成一个str,当然[toaddr] 可以写成一个列表。发送给多个人
server.sendmail(from_addr,toaddr,msg.as_string())
server.close()

发送普通文本是没有问题,我们要发送文档,图片呢?可不可以发个图片?发送个附件

import smtplib,time
from email.mime.multipart import  MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

user = '[email protected]'
pwd = 'sfdafasdfasdfsdaf'
to = '[email protected]'
#创建一个实例对象
msg = MIMEMultipart()
#设置标题一些主题,邮件来自,和邮件发送
msg['Subject'] = '这是风一般的男人的测试'
msg['From'] = user
msg['To'] = to
#给邮件加入内容
part = MIMEText('神一般的男人')
msg.attach(part)
#发送附件5.png图片
part = MIMEApplication(open('5.png','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="5.png")
msg.attach(part)

try:
        #创建一个实例
    s = smtplib.SMTP('smtp.qq.com',timeout=30)
        #登录 并且user是用户名,pwd是授权码
    s.login(user,pwd)
        #发送邮件,第一个参数是谁发送的,第二个参数是发送给谁,后面的是将内容变成string
    s.sendmail(user,to,msg.as_string())
 except Exception as e:
    print(e)
    #沉睡多少时间
time.sleep(2)
#关闭连接
s.close()

运行结果如下:

            

发送带有图片文件的邮件

呦西,搜嘎,上面的流畅操作,真爽啊,下面我要在普通的正文文本内容出入图片下,比如我把我的照片发送下下

                        

import smtplib
from email.mime.text import MIMEText
#输入相关的内容
from_addr = '[email protected]'
#smtp的授权码
password = 'camajkygjflmchbc'
#收件人
to_addr = '[email protected]'
#发送内容
msg = MIMEText('hello,send by python')
#服务器
smtp_server = 'smtp.qq.com'
#创建一个SMTP实例对象,并25是默认邮件发送端口
server = smtplib.SMTP(smtp_server,25)
#登录SMTP服务器
server.login(from_addr,password)
#发送邮件 第一个参数是发送的地址,第二个是接收地址,第三个是msg然后利用as_string()把MIMEText变成一个str,当然[toaddr] 可以写成一个列表。发送给多个人
server.sendmail(from_addr,to_addr,msg.as_string())
#关闭服务
server.close()

好了,流程差不多梳理到这里了,其实写好的有个脚本,发送邮件自动调用对方摄像头,并拍照返回的,已经打包成exe了,经过各方位的验证(公司的小姐姐都收到我的代码了),已经初步实现我的思路了,返回很多珍贵的资源,不过有个地方不完美,就是没有跳过免杀(气死人了)。

不多说了,我要开启 进程 + 协程 给我们老大和人事发“祝福”邮件了,同志们,祝愿我下周还在。

原创文章 49 获赞 23 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Smile_Mr/article/details/104019930