Python史上最简单5行代码群发邮件Zmail模块

zmail简介

Zmail 允许你发送和接受邮件尽可能的简单。你不需要去检查你的服务器地址、端口以及自己构造MIME对象,使用Zmail,你只需要关注你的邮件内容即可。Zmail只在python3中运行,不需要第三方模块。不支持python2

Zmail的优势

  • 自动填充大多数导致服务端拒信的头信息(From To LocalHost之类的)
  • 将一个字典映射为email,构造信件就像构造字典一样简单
  • 自动寻找邮件服务商端口号地址,自动选择合适的协议(经过认证的)
  • 只依赖于python3,嵌入其他项目时无需烦恼

安装

pip install zmail

开启POP3/SMTP服务

本次使用qq邮箱发送邮件,前提是需要打开qq邮箱的pop3/smtp功能:

登录邮箱——设置——账户——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开启POP3/SMTP服务,会先要求QQ号申请第二代密码保护,然后才能进行下一步,如果成功后,会生成一个授密码权

注意:一定要记住这个授权码,凡是需要用到qq邮箱涉及代码的情况下,大多会用到此授权码,如果忘记重新再次生成

 

发送邮件

smtp_host:smtp.qq.com腾讯发送邮箱的smtp服务地址,多个收件人的话,接收者可以用list

smtp_port:465腾讯发送邮箱的端口

mail 发件的内容,包含主题、正文、附件等

server 发送邮件人的相关信息,如账号,密码,smtp_host, smtp_port

receiver 接收者的邮箱地址

content_html 发送正文为html

content_text 发送正文

attachments带附件

server.send_mail([ ' yourfriend@example.com ',' 12345 @ example.com ' ],mail)收件人列表

server.send_mail([('Boss','yourfriend@example.com'),'12345@example.com'], mail) 收件人列表,带收件人名字

server.send_mail(['foo@163.com','foo@126.com'],mail,cc=['bar@163.com'])收件人列表,使用抄送

server.send_mail(['foo@163.com','foo@126.com'],mail,cc=[('Boss','bar@163.com'),'bar@126.com'])收件人列表,使用抄送带名字

 

代码如下:import zmail,os,base64
report_url=os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))),r'reports\result.html')
report_pic_url=os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))),r'reports\result.jpg')
#读取html报告
with open(report_url,'r',encoding='utf-8') as f:report_html=f.read()
#邮件内容和附件
mail={'subject':'邮件主题','content_text':'邮件内容','content_html':report_html,'attachments':[report_url,report_pic_url]}
#发送人邮件信息
server=zmail.server('20173535@qq.com','yzfbrgil',smtp_host='smtp.qq.com',smtp_port=465)
#发送至收件人和抄送人
server.send_mail(['wangl@xinrenlei.net','61954991@qq.com'],mail,cc=['20173535@qq.com'])

邮件内容

常用邮箱SMTP服务器地址大全

  阿里云邮箱(mail.aliyun.com):

  POP3服务器地址:pop3.aliyun.com(SSL加密端口:995;非加密端口:110)

  SMTP服务器地址:smtp.aliyun.com(SSL加密端口:465;非加密端口:25)

  IMAP服务器地址:imap.aliyun.com(SSL加密端口:993;非加密端口:143)

  

  谷歌邮箱(google.com):

  POP3服务器地址:pop.gmail.com(SSL启用端口:995)

  SMTP服务器地址:smtp.gmail.com(SSL启用端口:587)

  

  新浪邮箱(sina.com):

  POP3服务器地址:pop3.sina.com.cn(端口:110)

  SMTP服务器地址:smtp.sina.com.cn(端口:25)

  

  Tom邮箱(top.com):

  POP3服务器地址:pop.tom.com(端口:110)

  SMTP服务器地址:smtp.tom.com(端口:25)

  

  网易邮箱(163.com):

  POP3服务器地址:pop.163.com(端口:110)

  SMTP服务器地址:smtp.163.com(端口:25)

  

  126邮箱:

  POP3服务器地址:pop.live.com(端口:995)

  SMTP服务器地址:smtp.126.com(端口:25)

  

  雅虎邮箱(yahoo.com):

  POP3服务器地址:pop.mail.yahoo.com

  SMTP服务器地址:smtp.mail.yahoo.com

  

  雅虎中国(yahoo.com.cn):

  POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)

  SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)

  雅虎邮箱POP3的SSL不启用端口为110,POP3的SSL启用端口995;SMTP的SSL不启用端口为25,SMTP的SSL启用端口为465。

  

  Foxmail邮箱(foxmail.com):

  POP3服务器地址:POP.foxmail.com(端口:110)

  SMTP服务器地址:SMTP.foxmail.com(端口:25)

  

  QQ邮箱(mail.qq.com)

  POP3服务器地址:pop.qq.com(端口:110)

  SMTP服务器地址:smtp.qq.com(端口:25)

  SMTP服务器需要身份验证。

  

  搜狐邮箱(sohu.com):

  POP3服务器地址:pop3.sohu.com(端口:110)

  SMTP服务器地址:smtp.sohu.com(端口:25)

  

  HotMail邮箱(hotmail.com):

  POP3服务器地址:pop.live.com(端口:995)

  SMTP服务器地址:smtp.live.com(端口:587

  

  移动139邮箱:

  POP3服务器地址:POP.139.com(端口:110)

  SMTP服务器地址:SMTP.139.com(端口:25)

  

       中华网邮箱(china.com):

  POP3服务器地址:pop.china.com(端口:110)

  SMTP服务器地址:smtp.china.com(端口:25)

 

关注我吧!!!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow11CNN和全卷积神经网络

应用:图像分类,物体识别,看图说话 卷积神经网络的基本结构

jmeter web监听结果_Jmeter性能测试

Jmeter性能测试,Jmeter简介1.1 概述JMeter,每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。Jmeter 是一款…

Appium+Python安卓自动化测试之启动APP和配置获取

AppiumPython安卓自动化测试之启动APP和配置获取 本文章未讲述appiumpython环境部署,环境部署会新开文章 一、手机连接电脑 1、USB连接电脑和手机,手机上点确认连接(最好用原装线) 2、开启手机开发者模式和USB调试&#xff08…

python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作“全国身份证号验证及查询系统”,成品界面如下图: 本系统可以实现身份证号真伪验证,年龄、性别及发证地查询,看…

jop怎么读音英语怎么说_“跨年”英语怎么说?

2020年已经过去了31日晚上跨年夜,你在哪里跨年呢?今天的问题来了,你知道“跨年”用英语怎么说吗?一起学习一下吧。“跨年夜”英语怎么说?跨年夜的英语表达是:Spend New Years Eve / Celebrate New Years Ev…

吴恩达深度学习笔记——卷积神经网络(CNN)

目录 一、计算机视觉(Computer vision) 二、边缘检测示例(Edge detection example) 三、更多的边缘检测内容(More edge detection) 四、Padding 五、卷积步长(Strided convolution&#xff…

react实现全选和反选_全选的实现

在很多的表单中我们都会看到有一个这样的功能&#xff0c;全选后进行一系列的操作。如操作前操作后简单的js实现首先要定义多选框&#xff0c;在表头可以使用id来定义同时添加onclick点击事件<input type"checkbox" id"all" onclick"checkAllCart(…

对tf.nn.softmax的理解

Softmax的含义&#xff1a;Softmax简单的说就是把一个N*1的向量归一化为&#xff08;0&#xff0c;1&#xff09;之间的值&#xff0c;由于其中采用指数运算&#xff0c;使得向量中数值较大的量特征更加明显。 如图所示&#xff0c;在等号左边部分就是全连接层做的事。 W是全连…

面试后要请你吃饭_面试问同事请吃饭唯独不叫你咋办?小伙说这是好机会,当场被录取...

分享职场故事&#xff0c;交流职场经验&#xff0c;欢迎关注“罗波”。不知道大家在面试的过程中&#xff0c;有没有遇到过一些考官出了非常奇葩或者让你难以回答的题目。曾经在一次人事招聘的面试环节中&#xff0c;我的朋友小何就遇到了这样的一个问题&#xff0c;当时领导问…

心动的本质是什么_那一刻,我怦然心动了......

见到布莱斯罗斯基的第一天&#xff0c;我心动了。他的双眸有种魔力让我如痴如醉。女孩对一个刚见面的男孩一见钟情&#xff0c;男孩成了她的邻居&#xff0c;而她管这种感觉叫&#xff1a;怦然心动。2010年《怦然心动》上映&#xff0c;导演罗伯莱纳用一棵树&#xff0c;一对小…

筒灯智能驱动芯片作用_如然之光,魅族 Lipro 智能家居发布首期健康照明系列--智能设备 -...

1 月 5 日&#xff0c;魅族科技(MEIZU)正式发布了 Lipro 智能家居旗下的首期产品&#xff0c;Lipro 健康照明系列。作为 Lipro 品牌的首次产品亮相&#xff0c;Lipro 健康照明系列集顶尖光源品质与优雅工业设计于一体&#xff0c;为用户带来全场景、高品质的光照体验。Lipro 健…

vue 如何生成一个dom元素_通过一个简单的示例学习如何编写Vue组件

大家好&#xff0c;本篇文章我将带着大家一起学习如何编写自定义组件(Components)&#xff0c;通过「vue基础」新手快速入门篇(一)这篇文章的学习&#xff0c;我们知道了 Vue 设计的目的就是为了方便我们创建基于组件UI的项目。基于这个设计原则&#xff0c;我们可以更专注于设…

tensorFlow13卷积神经网络发展

数据增强&#xff1a;增加训练数据&#xff0c;水平翻转&#xff0c;改变对比度 dim代表插入的位置。0代表第一个位置&#xff0c;1表示第二个位置&#xff0c;-1表示最后一个位置

物体运动到一个点停止_大颗粒搭建中常见的结构运动

今天&#xff0c;给大家带来大颗粒搭建中常见的结构家长们可以带孩子一起将原理编程实践举一反三&#xff0c;创造创新&#xff01;1齿轮传动齿轮传动是指用主、从动轮的齿轮进行动力传递&#xff0c;从而达到使物体运动的作用。① 减速传动当小轮是主动力大轮是从动轮时物体作…

第k个数组中的最小值

练习1&#xff1a; 二维vector操作&#xff1a; #include<iostream> #include <vector> using namespace std; int main() {vector<vector<int>> a;vector<int> b;b.push_back(1);b.push_back(2);vector<int> c;c.push_back(11);c.push_b…

Leedcode1-求树的最小高度

#include<iostream> #include<algorithm> #include<queue> using namespace std; //5种情况&#xff1a;空树&#xff1b;没有子树&#xff1b;只有左/右子树&#xff1b;有俩子树&#xff1b; struct BinaryNode {BinaryNode *left;BinaryNode *right;int d…

C++/C中 sizeof(指针)和sizeof(数组名)的区别

1、sizeof(array)/sizeof(int)的含义 array是个数组 sizeof (array)就是这个数组所占的内存总量&#xff08;字节数), sizeof(int)就是单个所占的内存. 所以呢&#xff0c; sizeof (array&#xff09; / sizeof (int)就是array数组的元素的个数. 2、 sizeof(指针)和sizeof(数…

数据结构-栈3-栈的应用-就近匹配

#define _CRT_SECURE_NO_WARNINGS #include"LinkList.c" #include<stdio.h> #include<stdlib.h> #include<string.h> //括号有没有匹配。哪个不匹配就指向哪个。。 //扫描字符串 //1、非括号字符忽略 //2、若遇到左括号&#xff0c;则入栈 //3、若…