公司每天要发送日报,最近没事搞了一下如何自动发邮件,用的是腾讯企业邮箱,跟大家分享一下我的研究过程吧。

以前弄的发邮件的是用qq邮箱发的,当时在网上查资料最后达到了能发图片,网页,自定义收件人展示,主题等比较简

单的,但没想到说发送个word附件,后来才发现原来email里的MIMEText就可以,先上代码吧

# coding:utf8
"""
日报
"""
import smtplib
import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartclass MyEmail:def __init__(self):self.user = Noneself.passwd = Noneself.to_list = []self.cc_list = []self.tag = Noneself.doc = Nonedef send(self):"""发送邮件"""try:server = smtplib.SMTP_SSL("smtp.exmail.qq.com", port=465)server.login(self.user, self.passwd)server.sendmail("<%s>" % self.user, self.to_list, self.get_attach())server.close()print("send email successful")except Exception as e:print("send email failed %s" % e)def get_attach(self):"""构造邮件内容"""attach = MIMEMultipart()if self.tag is not None:# 主题,最上面的一行attach["Subject"] = self.tagif self.user is not None:# 显示在发件人attach["From"] = "发件人姓名,可以自定义<%s>" % self.userif self.to_list:# 收件人列表attach["To"] = ";".join(self.to_list)if self.cc_list:# 抄送列表attach["Cc"] = ";".join(self.cc_list)if self.doc:# 估计任何文件都可以用base64,比如rar等# 文件名汉字用gbk编码代替name = os.path.basename(self.doc).encode("gbk")f = open(self.doc, "rb")doc = MIMEText(f.read(), "base64", "gb2312")doc["Content-Type"] = 'application/octet-stream'doc["Content-Disposition"] = 'attachment; filename="' + name + '"'attach.attach(doc)f.close()return attach.as_string()if __name__ == "__main__":my = MyEmail()my.user = "name@name.com"my.passwd = "password"my.to_list = ["", ]my.cc_list = ["", ]my.tag = "日报"my.doc = u"C:\Documents and Settings\Administrator\Desktop\日报.doc"my.send()

View Code

首先使用腾讯企业邮箱需要使用ssl,不过在smtplib中有这个功能,一般使用SMTP,需要ssl的时候使用SMTP_SSL,在明白这个之前我费了好大的力气去找怎么用ssl,后来才发现原来除了换个模块外别的根本不用变化,在登录的时候我用的是@前面的帐号名,一直上不去,一直不知道为什么,第二天心里突然闪过一个想法:把完整邮箱地址当做帐号,一试,哈哈,登录成功了然后就是发送附件了,首先是需要发送一个word文档,找了半天才发现用
(from email.mime.text import MIMEText)
MIMEText就可以,本来我以为他只能处理文本的txt,原来他不仅可以处理文本,doc,rar都可以用它添加到附件里,只要在初始化的时候使用base64就可以,后面的参数是doc使用的字符集吧,这个没研究过,不确定
doc["Content-Type"] = 'application/octet-stream'
doc["Content-Disposition"] = 'attachment; filename=123.doc'

这个指定类型和描述,在描述里可以自定义文件名貌似这个文件名是gbk编码的,我的附件名字是中文,先使用u""把文件名声明为unicode,再转为gbk,如果使用unicode的话好像不行,文件名会变成系统定义的文件名,不过文件仍然可以用,下载下来改个名字没什么区别,使用utf8会出现乱码
好吧,发现一个漏洞,抄送的邮件没发出去

在
server.sendmail("<%s>"%self.user, self.to_list, self.get_attach())中第二个参数表示的是想要发送到的地址,需要把抄送的地址也放在这个列表里,如下
server.sendmail("<%s>"%self.user, self.to_list + self.cc_list, self.get_attach())
至于在构造邮件时设置的不用变,那个只起到显示的作用,和发给谁没关系,只是在邮件内容中说明了一下发给谁,抄送给谁而已,实际上谁真正收到需要在sendmail里添加

转载于:https://www.cnblogs.com/dyfblog/p/4294172.html

python使用smtplib和email发送腾讯企业邮箱邮件相关推荐

  1. 【邮件服务】hutool发送腾讯企业邮箱案例

    目录 一.hutool发送腾讯企业邮箱 1. 引入依赖 2. 配置resources/config/mail.setting 3. 发送实例,更多参考hutool邮件发送文档 4. 发送结果 ​ 参考 ...

  2. 虚拟邮箱怎么设置方法_腾讯企业邮箱邮件列表白名单设置方法

    商务合作伙伴经常收到腾讯企业邮箱邮件群组账号退信,这个邮件群组中的所有邮箱无法收到邮件,由于收到退信方是群发邮件,一封邮件要发给很多个邮箱,腾讯企业邮箱系统判断为垃圾邮件,直接拒收,这就耽误事了,都无 ...

  3. Java使用Hutools工具类发送腾讯企业邮箱

    1 邮箱配置 登录登录企业邮箱,点击设置 点击收发信设置,如图默认勾选设置 切换到邮箱绑定设置,需要开启安全登录,因为我们需要使用客户端专用密码(有的叫授权码) 点击生成新密码,将生成的密码拷贝 2 ...

  4. GITLAB email不发送腾讯企业邮箱解决方案

    废话不说,直接给思路 gitlab重部署后新加用户不发送激活邮件,配置如下: gitlab_rails['smtp_enable']=true gitlab_rails['smtp_address'] ...

  5. springboot 发送腾讯企业邮箱

    如果配置写在application.properties 就直接引入使用即可 @Resource private JavaMailSenderImpl javaMailSender; 如果配置在Apo ...

  6. springboot工程发送腾讯企业邮箱

    抄的,参考http://www.cnblogs.com/LUA123/p/5575134.html public class SendSpEmailUtil {//用户名密码验证,需要实现抽象类Aut ...

  7. JavaMail 接收腾讯企业邮箱邮件

    https://my.oschina.net/jasonultimate/blog/165015

  8. SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)

    目录 一.获取邮箱授权码 二.引入依赖 三.配置文件(请注意yml格式,或者使用.properties) 四.不带附件发邮箱 五.带附件发邮箱 六.邮箱类型拓展 本篇文章以QQ邮箱作为发件人写案例演示 ...

  9. 腾讯企业 html邮件模板,python连接腾讯企业邮箱发送html邮件

    在工作中难免用到一些自动化的邮件配置,这里用python简单写了一个连接腾讯企业邮箱的脚本邮件代码.备忘下来. # coding=utf-8 import smtplib from email.MIM ...

最新文章

  1. python绘图函数
  2. show processlist结果筛选(转)
  3. hp-ux mysql_HP-UX安装MySQL
  4. 【NoSQL】NoSQL入门和概述 - 笔记
  5. 大数据技术 学习之旅_如何开始您的数据科学之旅?
  6. python书籍_Python书籍大汇总——入门到实战
  7. web前端学习笔记(二)---Django
  8. 条款23: 必须返回一个对象时不要试图返回一个引用
  9. 计算机网络知识学习(核心:网络协议)-- 应用层
  10. 多媒体信息技术对远程教育的影响
  11. windows无法打开添加打印机_打印机常见故障机及处理方法
  12. 泛在电力物联网建设大纲ppt
  13. 全国短信息中心号码一览
  14. fMRI Tutorial:FSL处理功能核磁共振数据
  15. 玩转华为ENSP模拟器系列 | 配置RSTP功能示例
  16. 微信小程序引入小图标
  17. java哪个软件编程好学吗_java是什么软件好学吗(java编程用哪个软件)
  18. [Web 安全] WASC 和 OWASP两个web安全方面组织机构介绍
  19. 案例分析:session丢失及appdomain回收
  20. linux系统如何扩展屏幕,大神教你用 autoplank 在多个显示器上使用 Plank 扩展坞

热门文章

  1. 不得了,日本出版社竟是这样吸引死宅学编程的;谷歌推 TensorFlow Lite,移动开发者福音...
  2. 记录十月的金山打字练习
  3. php怎么加css和背景图,如何使用css中:after伪元素实现背景图片的叠加层?
  4. oracle 取字段长度为5,oracle9i中varchar2(5)字段长度不足5前面补0?
  5. 日本人真实的生活水平
  6. 【计算机推免】川大计算机夏令营_华南理工软件预推免_华科计算机预推免(2020.10)
  7. 如何准备信息学算法竞赛? ——我是如何赢得美国信息学奥林匹克竞赛3届金牌的
  8. oracle软件对会计的发展,财务软件的现状及发展趋势.doc
  9. 乐里斗未能链接服务器,LOONEY TUNES 反斗世界无法连接服务器是什么原因
  10. 电脑蓝屏出现一堆英文的解决方法