1. '''
  2. 一、先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板
  3. 二、发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com
  4. 三、写邮件主题和正文,这里的正文是HTML格式的
  5. 四、最后调用SMTP发件服务
  6. '''
  1. 126mail -> qqmail send email
  1. import uuid
  2. import smtplib
  3. from email.mime.text import MIMEText
  4.  
  5. #发邮件相关参数
  6. smtpsever = 'smtp.126.com'
  7. sender = '123@126.com'
  8. psw = "XXX" #126邮箱授权码
  9. receiver = '456@qq.com'
  10.  
  11. #编辑邮件的内容
  12. # subject=u"NBA"
  13. body=str(uuid.uuid4())
  14. msg=MIMEText(body,'html','utf-8')
  15. msg['from']='123@126.com'
  16. msg['to']='456@qq.com'
  17. # msg['subject']=subject
  18.  
  19. try:
  20. smtp = smtplib.SMTP()
  21. smtp.connect(smtpsever)
  22. smtp.login(sender,psw)
  23. smtp.sendmail(sender,receiver,msg.as_string())
  24. print ("邮件发送成功")
  25. except smtplib.SMTPException:
  26. print ("Error: 无法发送邮件")

  qqmail->126mail send email 

  1. import smtplib,uuid
  2. from email.mime.text import MIMEText
  3.  
  4. #发邮件相关参数
  5. smtpsever='smtp.qq.com'
  6. sender='123@qq.com'
  7. psw="XXXXX" #qq邮箱授权码
  8. receiver='456@qq.com'
  9. port=465
  10.  
  11. #编辑邮件内容
  12. subject = u"你猜这是啥?"
  13. body = str(uuid.uuid4())
  14. msg=MIMEText(body,'html','utf-8')
  15. msg['from']='123@qq.com'
  16. msg['to']='456@qq.com'
  17. msg['subject'] = subject
  18.  
  19. #链接服务器发送
  20. smtp = smtplib.SMTP_SSL(smtpsever,port)
  21. smtp.login(sender,psw) #登录
  22. smtp.sendmail(sender,receiver,msg.as_string()) #发送
  23. smtp.quit() #关闭

发送带附件的邮件

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.mime.multipart import MIMEMultipart
  4.  
  5. #发邮件相关参数
  6. smtpsever='smtp.qq.com'
  7. sender='123@qq.com'
  8. #psw="xxxx" #126邮箱授权码
  9. psw="xxxx"
  10. receiver='456789@qq.com'
  11. port=465
  12.  
  13. filepath="E:\\result.html" #编辑邮件的内容
  14. with open(filepath,'rb') as fp: #读文件
  15. mail_body=fp.read()
  16.  
  17. #主题
  18. msg=MIMEMultipart()
  19. msg["from"]=sender
  20. msg["to"]=receiver
  21. msg["subject"]=u"这个我的主题"
  22.  
  23. #正文
  24. body=MIMEText(mail_body,"html","utf-8")
  25. msg.attach(body)
  26. att = MIMEText(mail_body,"base64","utf-8")
  27. att["Content-Type"] = "application/octet-stream"
  28. att["Content-Disposition"] = 'attachment; filename="test_report.html"'
  29. msg.attach(att)
  30.  
  31. try:
  32. smtp=smtplib.SMTP()
  33. smtp.connect(smtpsever) #连接服务器
  34. smtp.login(sender,psw)
  35. except:
  36. smtp=smtplib.SMTP_SSL(smtpsever,port)
  37. smtp.login(sender,psw) #登录
  38. smtp.sendmail(sender,receiver,msg.as_string()) #发送
  39. smtp.quit()

之前写过用标准库使用Python Smtplib和email发送邮件,感觉很繁琐,久了不用之后便忘记了。前几天看知乎哪些Python库让你相见恨晚?,看到了yagmail第三方库,学习过程中遇到一些问题,记录在此处。

之前使用的python的smtplib、email模块发模块的一步步骤是:

  1. 一、先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板
    二、发邮件几个相关的参数,每个邮箱的发件服务器不一样,以126为例子百度搜索服务器是 smtp.126.com
    三、写邮件主题和正文,这里的正文是HTML格式的
    四、最后调用SMTP发件服务
  2.  
  3. 看下代码:
  1. import uuid
  2. import smtplib
  3. from email.mime.text import MIMEText
  4.  
  5. #发邮件相关参数
  6. smtpsever = 'smtp.126.com'
  7. sender = 'sender@126.com'
  8. psw = "126mail@126.com" #126邮箱授权码
  9. receiver = 'receiver@qq.com'
  10.  
  11. #编辑邮件的内容
  12. # subject=u"NBA"
  13. body=str(uuid.uuid4())
  14. msg=MIMEText(body,'html','utf-8')
  15. msg['from']='username@126.com'
  16. msg['to']='userename@qq.com'
  17. # msg['subject']=subject
  18.  
  19. try:
  20. smtp = smtplib.SMTP()
  21. smtp.connect(smtpsever)
  22. smtp.login(sender,psw)
  23. smtp.sendmail(sender,receiver,msg.as_string())
  24. print ("邮件发送成功")
  25. except smtplib.SMTPException:
  26. print ("Error: 无法发送邮件")

要完成上面的邮件发送,需要以下信息:

  1. 1.发件服务器
    2.发件人账号
    3.发件人邮箱密码[指授权码]
    4.收件人账号
    5.编辑邮件内容[正文、从哪里、到哪里]
    6.链接邮箱服务器
    7.登录邮箱[提供发件人账号和密码(指授权码)]
    8.发送邮件

看起来整个过程有那么一点点复杂,但是也还好吧,毕竟功能可以实现。。。

但是yagmail的出现会颠覆一些人对email的印象,因为yagmail对比email来说,实现上真的是太简单了,yagmail 在Github上Home Page给出了yagmail的简单介绍以及使用。下面给出一个简洁的示例:

yagmail安装

  1. pip install yagmail

给单个接受者发送邮箱

  1. import yagmail
  2.  
  3. #链接邮箱服务器
  4. yag = yagmail.SMTP(user="sender@126.com", password="126邮箱授权码", host='smtp.126.com')
  5.  
  6. #邮箱正文
  7. contents = ['This is the body, and here is just text http://somedomain/image.png',
  8. 'You can find an audio file attached.', '/local/path/song.mp3']
  9.  
  10. # 发送邮件
  11. yag.send(receiver@qq.com', 'subject', contents)

发送结果如下:

对比email、smtp模块,yagmail的实现真的是太简单了,感动的要哭了~~~~

给多个接受者发送邮件

  1. # 发送邮件
  2. yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)

在()内新增多个收件人的邮箱即可,其他参数不需要修改,是不是很简单~~~

发送带附件的邮件

  1. yag.send('aaaa@126.com', '发送附件', contents, ["E://whitelist.txt","E://baidu_img.jpg"])

上面的["E://whitelist.txt","E://baidu_img.jpg"]是上传附件的路径。返回结果如下:

Python自动发邮件——smtplib和email库和yagmail库的更多相关文章

  1. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  2. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  3. 【python】python 自动发邮件

    一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...

  4. Python自动发邮件-yagmail库

    之前写过用标准库使用Python Smtplib和email发送邮件,感觉很繁琐,久了不用之后便忘记了.前几天看知乎哪些Python库让你相见恨晚?,看到了yagmail第三方库,学习过程中遇到一些问 ...

  5. 【Python系列】Python自动发邮件脚本-html邮件内容

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  6. 【Python系列】Python自动发邮件脚本

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  7. python自动发邮件总结及实例说明

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...

  8. python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)

    简介 发邮件前我们需要了解的是邮件是怎么一个形式去发送到对方手上的,通俗点来说就是你写好一封信,然后装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去,其他的就不关心了,只是关心时间,而电子邮 ...

  9. python自动发邮件

    from email.header import Header from email.mime.text import MIMEText from email.utils import parsead ...

随机推荐

  1. 多目标跟踪方法:deep-sort

    多目标跟踪方法:deep-sort deep_sort Multitarget tracking data association 读'Simple Online and Realtime Track ...

  2. python-day38--IO模型

    一. IO模型介绍 对于一个网络通信,IO涉及到两个阶段 1.操作系统等数据来 2.进程或线程等操作系统拷贝数据 记住这两点很重要,因为这些IO模型的区别就是在两个阶段上各有不同的情况. 二.阻塞IO ...

  3. Oracle11g温习-第六章:控制文件

    2013年4月27日 星期六 10:33  .控制文件的功能和特点 1) [定义数据库当前物理状态] 2) [维护数据的一致性]  如果控制文件中的检查点与数据文件中的一致,则说明数据一致,可以启动到 ...

  4. 对象不能从 DBNull 转换为其他类型

    SQL语句:select sum (datediff(second,Begin_Time,End_Time)) as 总时长 from 数据表这是我开始的程序:int 总时长=0;总时长 =Conve ...

  5. http1.0 1.1 2.0区别

    http1.0 1.1 2.0区别 转载:https://blog.csdn.net/linsongbin1/article/details/54980801/ 1.HTTP1.0 1.1区别 (1) ...

  6. JAVA并行程序基础

    JAVA并行程序基础 一.有关线程你必须知道的事 进程与线程 在等待面向线程设计的计算机结构中,进程是线程的容器.我们都知道,程序是对于指令.数据及其组织形式的描述,而进程是程序的实体. 线程是轻量级 ...

  7. storage路径问题

    1 概念总述 android开发中,关于存储路径,我们经常听到以下几个概念:内存.内部存储和外部存储,现在我们就来详细说说这三者区别与联系. 内存:英文中记为memory,即RAM 内部存储:英文记为 ...

  8. Android轮播图Banner的实现

    从慕课网上学了一门叫做“不一样的自定义实现轮播图效果”的课程,感觉实用性较强,而且循序渐进,很适合初学者.在此对该课程做一个小小的笔记. 实现轮播思路: 1.一般轮播图是由一组图片和底部轮播圆点组成, ...

  9. linux目录管理、时钟管理、文件查看命令

    inux的两种时钟: 系统时钟:由Linux内核通过CPU的工作频率进行的计时: 硬件时钟: hwclock: 显示硬件时钟 -s, --hctosys -w, --systohc cal:日历 目录 ...

  10. 51nod1288汽油补给

    考虑当前这个汽油站加的情况. 如果在t以内的范围有一个加油站比当前加油站便宜,那么就只需要加油加到足够开到最近的比自己便宜的加油站. 否则加满. 但是寻找超时 我们可以先加满,找到一个便宜的加油站之后 ...