1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python--smtplib加email发邮件给指定邮箱(一)

python--smtplib加email发邮件给指定邮箱(一)

时间:2018-08-02 10:48:56

相关推荐

python--smtplib加email发邮件给指定邮箱(一)

python--smtplib加email发邮件给指定邮箱(一)

前言:1、模块详解2、授权码获取2.2 如何获取授权码2.2.1 设置2.2.1 选择账户2.2.1 打开SMTP服务 3、python与smtp服务器之间的具体交互4、Email模块5、案例5.1、注意【博主遇到的坑】 6、文末彩蛋--轻松一刻

更多关于机器学习的知识请加关注哟~~。若需联系博主请私信或者加博主联系方式:

QQ:1542334210

微信公众号:不一样的数据分析

微信号:ZDSL1542334210

前言:

由于之前人事工作中的需要,要将老板的通知消息发送给指定员工,通知其进行开会,那么就需要将消息内容发送给对应的负责人,人事部请我写一个脚本,如果能够实现代码发邮件通知相关人员开会,那么是不是会比复制消息再粘贴更加节约时间?我的回答是肯定的,现在部门负责人是五六个而已,但是如果说有几十个、上百个甚至更多,难道我们要复制这么多次?要发送这么多个文件?

在工作中,你永远记住一件事,只要是重复的事情,都不是人干的,机器能够解决为什么要用人来做?于是我就专门写了一个Python自动发邮件给别人的脚本

【PS:这里我会分几个版本进行讲解,从发送消息–>发送txt–>发送excel–>发送图片–>发送mp3–>发送mp4–>定时发送邮件】

1、模块详解

python发送邮件需要用到python自带的两个模块,smtplib和email。由于是内置模块直接import smtplib ,email导入,无需下载。python的smtplib提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装,这就使得我们利用其发送邮件如鱼得水。

2、授权码获取

smtplib用法相对来说很简单,就是分为两步。创建SMTP的操作对象并连接smtp目标服务器,可以是163、QQ、Gmail等根据自己的账号登录目标服务器(注:发送者是需要传人自己的邮箱地址和邮箱授权码)

2.2 如何获取授权码

这里我将以QQ邮箱为列。

2.2.1 设置

登陆电脑端QQ邮箱后,点击设置

2.2.1 选择账户

点击账户

2.2.1 打开SMTP服务

打开SMTP服务,此时如果你没有开启过,那么系统会引导你开通,方法是编辑短信开通该服务,开通后会生成一个授权码,请记住该授权码,它和你的邮箱密码不一样,待会的代码将会使用该授权码登陆。

3、python与smtp服务器之间的具体交互

python与smtp之间到底是如何交流,如何完成这一交易呢?

server = smtplib.SMTP_SSL("",timeout=30) #实例化一个SMTP对象 ,传人:邮件服务地址,端口号server.set_debuglevel(0) #是否打印出与邮箱交易的所有信息 0表示不用打印1表示打印server.ehlo("") #使用ehlo指令向ESMTP(SMTP扩展)确认你的身份server.login(myemail,password) # 传入发送者邮箱地址和授权码server.sendmail(msg['from'], msg['to'],msg.as_string()) # msg['from'] 发送人邮箱地址,msg['to'] 收件人邮箱地址,msg.as_string()中as_string()是将msg(MIMEText或MIMEMultipart对象)变为str。server.close() # 关闭服务

从这里可以看到,Python需要我们传入几个参数,发件人邮箱地址和授权码,收件人邮箱地址。

4、Email模块

from email.mime.text import MIMEText from email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipart

这几个模块啥意思呢,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象。当然此时是可以传入附件进行发送的,如附件一个excel、txt、png文件等。

5、案例

这里我们简单做个测试,我们对马云主管,邮箱:3327908431@发送一条邮件信息,提醒他明天要开会,那么直接上码:

from email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationmyemail='1542334210@'otheremail='3327908431@'password='uajsuycdnxbg'msg = MIMEMultipart()msg['to'] = otheremailmsg['from'] = myemailmsg['subject'] = "明天早上开会提醒"part = MIMEText("通知:马云主管,明天早上9:30将在致远楼405开早会,请务必到场!如果迟到你以后下象棋必备指指点点!")msg.attach(part)server = smtplib.SMTP_SSL("",timeout=30)server.set_debuglevel(0)server.ehlo("")server.login(myemail,password)server.sendmail(msg['from'], msg['to'],msg.as_string())server.close()

我们来看看马云主管收到消息的邮件内容:

5.1、注意【博主遇到的坑】

案例虽成功,不过我们要注意一个问题,那就是使用smtplib和email发送邮件后,会可能出现一个问题就是发件人的邮箱找不到发送记录,但是收件人却收到了邮件,无论发送多少条,发件人都没有记录,那么这时候怎么办呢?请进入发件人邮箱的设置–账户–收取选项,把“SMTP发信后保存到服务器”勾选上,就可以看到发送人的发送记录啦!!

6、文末彩蛋–轻松一刻

前两天我好朋友小熊被上司开除了,然后回来就大哭,我正问他为啥被开除了,他说:“我们老板让我发一条邮件给他女秘书,内容是‘想死你了,在国际大酒店等!’,群发也就算了,但是回复的消息是这样的 女秘书:德性,干嘛猴急! 女科长:今天不方便改天吧! 男副局长:咋不知道你也是男同啊? 女部下:马上到! 女副局长:你才想起我呀? 女书记:去那么远干吗?到我办公室来! 老婆:回来!还浪费那钱!…

今天到这里就结束啦~这里是Jeruser python自动化栏目,让你体验不一样的数据分析,如何将工作变得有趣,请持续关注我。谢谢观看我是Jetuser–data

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。