• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

利用Python编程,批量发送电子邮件(含附件)

python 搞java代码 3年前 (2022-05-21) 36次浏览 已收录 0个评论

电子邮件自诞生到现在,依旧是重要的通讯工具.在日常工作大量的告警,自动化报表依旧是通过邮件来完成.以前一直是只发送html正文,前两天遇到了发附件的情况,顺道解决了邮件名乱码的问题,记录一下

正常发送邮件

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

电子邮件到今天这个时间点,处理垃圾邮件的管控,很多云服务商和电子邮件服务商已经不再支持smtp通过25端口来发送,而要使用ssl加密的465端口

本文演示基本腾讯企业邮箱,估计QQ个人邮箱也一样.

Python:3.8.2

<span class="hljs-comment">#!/usr/local/bin/python3.8.2
<span class="hljs-comment"># -*- coding: utf-8 -*-
<span class="hljs-keyword">import smtplib
<span class="hljs-keyword">from email.mime.multipart <span class="hljs-keyword">import MIMEMultipart
<span class="hljs-keyword">from email.mime.text <span class="hljs-keyword">import MIMEText

mail_host = <span class="hljs-string">"smtp.exmail.qq.com"
mail_user = <span class="hljs-string">"[email protected]"
mail_pass = <span class="hljs-string">"xxxxxx"
mail_from = <span class="hljs-string">"rainbird"
mail_to   = <span class="hljs-string">"[email protected]"
mail_title= <span class="hljs-string">"rainbird"s mac book"
me = mail_from +<span class="hljs-string">"<"+mail_user+<span class="hljs-string">">"

mail_body = <span class="hljs-string">"/result_report.html"
msg = MIMEText(mail_body,_subtype=<span class="hljs-string">"html",_charset=<span class="hljs-string">"utf8")
msg[<span class="hljs-string">"Subject"]  = mail_title
msg[<span class="hljs-string">"From"]     = me
msg[<span class="hljs-string">"To"]       = mail_to
<span class="hljs-keyword">try:
    s = smtplib.SMTP_SSL(host=mail_host)
    s.connect(mail_host)
    s.login(mail_user,mail_pass)
    s.sendmail(me, mail_to, msg.as_string())
    s.close()
    print(<span class="hljs-string">"send mail success!")
<span class="hljs-keyword">except Exception <span class="hljs-keyword">as e:
    print(e)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

www#gaodaima.com来源[email protected]搞@^&代*@码网搞代码

发送附件

这部分比较困难的部分就是邮件名乱码.经过尝试指定邮件名UTF8编码,就可以了.

<span class="hljs-comment">#!/usr/local/bin/python3.8.2
<span class="hljs-comment"># -*- coding: utf-8 -*-
<span class="hljs-keyword">import smtplib
<span class="hljs-keyword">from email.mime.multipart <span class="hljs-keyword">import MIMEMultipart
<span class="hljs-keyword">from email.mime.text <span class="hljs-keyword">import MIMEText

mail_host = <span class="hljs-string">"smtp.exmail.qq.com"
mail_user = <span class="hljs-string">"[email protected]"
mail_pass = <span class="hljs-string">"xxxxxx"
mail_from = <span class="hljs-string">"rainbird"
mail_to   = <span class="hljs-string">"[email protected]"
mail_title= <span class="hljs-string">"rainbird"s mac book"
me = mail_from +<span class="hljs-string">"<"+mail_user+<span class="hljs-string">">"

<span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">file_get_content<span class="hljs-params">(file_name):
    <span class="hljs-keyword">with open (file_name,<span class="hljs-string">"r") <span class="hljs-keyword">as f:
        <span class="hljs-keyword">return f.read()

mail_body = <span class="hljs-string">"/result_report.html"
mail_att  = <span class="hljs-string">"/result.html"
msg = MIMEMultipart()
msg[<span class="hljs-string">"Subject"]  = mail_title
msg[<span class="hljs-string">"From"]     = me
msg[<span class="hljs-string">"To"]       = mail_to
msg.attach(MIMEText(file_get_content(mail_body),_subtype=<span class="hljs-string">"html",_charset=<span class="hljs-string">"utf8"))
<span class="hljs-comment"># 邮件附件
att = MIMEText(file_get_content(mail_att), <span class="hljs-string">"base64", <span class="hljs-string">"utf-8")
att.add_header(<span class="hljs-string">"Content-Disposition", <span class="hljs-string">"attachment", filename=(<span class="hljs-string">"utf-8", <span class="hljs-string">"", <span class="hljs-string">"report.html"))
msg.attach(att)
<span class="hljs-keyword">try:
    s = smtplib.SMTP_SSL(host=mail_host,port=<span class="hljs-number">465)
    s.connect(mail_host)
    s.login(mail_user,mail_pass)
    s.sendmail(me, mail_to, msg.as_string())
    s.close()
    print(<span class="hljs-string">"send mail success!")
<span class="hljs-keyword">except Exception <span class="hljs-keyword">as e:
    print(e)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

结语

发邮件并不是什么困难的事儿,只是邮件涉及一堆参数,主机地址,用户名,密码啥的,把这些东西放在配置项里是好习惯.


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:利用Python编程,批量发送电子邮件(含附件)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址