在我们日常项目中,会经常使用到邮件的发送功能,如何利用Python发送邮件也是一项必备的技能。本文主要讲述利用Python来发送邮件的一些基本操作。

本章主要包含知识点:

邮件发送原理简述即常用smtp邮箱服务器

发送文字邮件

发送html邮件

我们一般发送邮件时,用到的代理有outlook,qq邮箱等,不管用什么代理,你都需要登录你的邮箱,而这个邮箱就是在各大邮箱服务器上开辟的一部分空间,用来接收、发送和存储你的邮件信息。

说到邮件发送,不得不了解一下SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。邮件发送原理简单讲就是代理通过SMTP协议将信息发送到邮箱服务器上,邮箱服务器再通过POP3协议转发到收件人的邮件服务器中,如下图:

因此使用Python发送邮件时,可以将Python的解释器当做一个代理,需要首先连接到邮箱服务器,将邮件发过去,那么由于不同公司的邮箱服务器地址不尽相同,这里列出了一些常用的地址如下:

既然已经知道邮件发送原理,接下来就是用Python连接smtp服务器,不就可发送邮件了。其实强大的python早就封装好了一个package:email, 利用其中的几个类即可实现,具体代码如下:

1 from email.mime.text importMIMEText2 from email.header importHeader3 from email.mime.multipart importMIMEMultipart4 importsmtplib5

6

7 classEmail(object):8

9 def __init__(self):10 self.smtp = ''

11 self.username = ''

12 self.password = ''

13

14 self.subject = ''

15 self.sender = ''

16 self.receiver =[]17 self.cc =[]18

19

20 defmessage_init(self, html):21 message =MIMEMultipart()22 message['subject'] = Header(self.subject, 'utf-8')23 message['From'] =self.sender24 message['To'] = ','.join(self.receiver)25 message['Cc'] = ','.join(self.cc)26

27 #解决乱码, html是html格式的str

28 message_context = MIMEText(html, _subtype='html', _charset='utf-8')29

30 #邮件正文内容

31 message.attach(message_context)32

33 return message

Email自定义类中属性包含了邮箱服务器的地址,邮箱登录的用户名和密码,邮件主题,发件人,收件人和抄送人。这里注意了,收件人和抄送人是个list,添加的时候使用append()

message_init(self, html)即将发送内容进行初始化,包括邮件发送和收件人的初始化。其中 MIMEText(html, _subtype='html', _charset='utf-8') 中,参数一为发送的邮件内容,为字符串;参数二表示设置文本格式为html(邮件都是使用html格式发送的);参数三表示设置编码格式为utf-8。如上这样一个邮件信息包就构造好了,万事俱备只欠东风,发送邮件的核心代码如下:

1 defsend_email(self, html):2 message =self.message_init(html)3 smtp_obj =smtplib.SMTP(self.smtp)4 smtp_obj.login(self.username, self.password)5 smtp_obj.sendmail(self.sender, self.receiver +self.cc, message.as_string())6 smtp_obj.quit()

模拟正常客户端邮件发送,遵循登录->发送->退出原则, 这里注意sendmail的第二个参数为 收件人和抄送人的合集。

下面来测试一下这个代码是否可行,发送一段简单的文字:

1 if __name__ == '__main__':2 print('start……')3 sende =Email()4 strs = "This is a test email / 这是一封测试邮件"

5

6 sende.smtp = 'smtp.163.com'

7 sende.username = 'wjian.coming@163.com'

8 sende.password = 'xxxxxx'

9

10 sende.subject = 'Test/测试邮件'

11 sende.sender = 'wjian.coming@163.com'

12 sende.receiver.append('948001879@qq.com')13 sende.cc.append('948001879@qq.com')14

15 sende.send_email(strs)16

17 print('end')

如上,测试了发送中文和英文两种语言,发送了测试的简单字符串,实测结果可行,截图如下

那么如何发送html格式文件呢?其实想想也很简单,将html文件全部读取出来之后,转为str即可,如何转换,可以参考我之前写的文章,读取文件生成str,参考链接:https://www.cnblogs.com/potato-find/p/13216471.html 使用 readFile 方法即可,然后复用上述的方法。具体的代码就不在这里体现了,有兴趣的同学可以结合实现一下呢。

那么,利用Python如何发送邮件已经都了解了吧,那么这时就会引发更深的问题:如何添加附件?如何发送图片呢? Good question! 关注我,下期为你解答。

(希望我的文章能够助你一臂之力,成就更辉煌的你,关注我,我们一起进步)

python实现匿名发邮件_Python 实现邮件发送功能(初级)相关推荐

  1. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  2. python自动下载邮件_python实现邮件自动化

    1.自动接收邮件并且下载附件,使用pop3协议. # 接收邮件并下载邮件附件 import poplib import email import datetime import time from e ...

  3. python用outlook自动发邮件_python调用outlook发送exchange邮件(含附件)

    最近在解决一个问题,就是生成每日数据的报表,然后利用邮件群发给各位同事.由于主要工作不在这,为了节省时间,所以选择了使用python语言. 选择发送邮件时,有人可能会说直接使用smtp库不就行吗?为啥 ...

  4. python 使用公司邮箱发邮件_python 通过邮件发送附件之企业QQ邮箱

    def setmailinfo(self, receiveUser, cc, subject, text, text_type, *attachmentFilePaths): # 设置邮件的基本信息( ...

  5. 看我用Python一秒发数百份邮件,让财务部妹子追着喊6

    大家好,我是是编程秋枫 之前有分享过如何用Python发送邮件的文章,今天再分享一个如何用几行Python代码让财务部妹子追着喊666的实用案例. 喜欢编程的小伙伴可以加小编的Q群1026782549 ...

  6. python发送qq邮件_python使用SMTP发送qq或sina邮件

    python使用qq邮箱(个人邮箱)发送邮件需开启qq邮箱的SMTP服务 在设置中开启pop3/SMTP服务,返回的密码就是之后代码中登录使用账户密码(在完整代码中标识了出来) 之后出现如下错误 复制 ...

  7. python定义匿名函数关键字_python语言的匿名函数、7种可调用对象以及用户定义的可调用类型...

    匿名函数 在python表达式中,用来创建匿名函数的是lambda关键字. lambda函数在python语言中只能使用纯表达式,也就是说,在lambda函数体中不能使用while和try,当然也不能 ...

  8. python定义匿名函数关键字_Python(11):Python函数基础(定义函数、函数参数、匿名函数)...

     函数先定义函数,后调用 一.定义函数: 1.简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. ...

  9. python微信定时发消息_python实现给微信指定好友定时发送消息

    微信如何在设定时间自动发送信息给指定好友 微信没有定时发送信息的功能,但是可以借助小程序. 世界上最遥远的距离,不是生与死,而是小编就站在你面前,你却不知道小编爱你. 打开微信之后在搜索小程序中输入蜗 ...

  10. 用python定时自动发微博_Python脚本实现自动发带图的微博

    要自动发微博最简单的办法无非是调用新浪微博的API(因为只是简单的发微博,就没必要用它的SDK了).参考开发文档http://open.weibo.com/wiki/API 进行代码编写 创建应用 要 ...

最新文章

  1. 管理员修改文件的权限
  2. 《Cisco IPv6网络实现技术(修订版)》一2.6 配置练习:使用Cisco路由器配置一个IPv6网络...
  3. 【渝粤题库】陕西师范大学152102 管理学原理作业(高起专)
  4. 迪杰特斯拉算法的实现
  5. html5获取gps坐标,html5获取手机GPS信息的示例代码
  6. Android开发实战一之搭建开发环境-附测试实例(已亲测)
  7. Java基础——JSP(三)
  8. python3 beautifulsoup4_Python 3.x 安装 BeautifulSoup4 最佳实践
  9. C/C++全局变量和局部变量作用域问题
  10. 如何在 Windows 下像 Mac 一样优雅开发
  11. DWG文件损坏了怎么办?
  12. java 毛笔字,Photoshop设计唯美大气的毛笔字
  13. python双样本t检验_两样本t检验的scipy实现
  14. 【单片机开发平台】msp430几种不同开发平台的对比
  15. ubuntu1404 安装 ppsspp
  16. vue中安装和使用Dplayer视频播放器
  17. IDEA代码规约插件灵狐安装
  18. 软件开发委托协议(个人)
  19. 云服务器迁移 (全网最省钱最详细攻略)
  20. MYSQL 5.7 普通表在线转分区表

热门文章

  1. 不良事件总结怎么写_年度不良事件总结
  2. java 错误声音播放器_JavaME 声音播放器的使用
  3. 计算机cpu近几年价格,CPU性能过剩的福利 十年老电脑还能再战几年?
  4. 永不消逝的电波 -GSM空口信号的接收与解码
  5. VBA批量OCR识别提取身份证照片信息_OCR车牌识别系统实现停车场智能停车管理
  6. 用python帮别人写了个文字识别程序
  7. vscode 升级时失败 win10
  8. 取到崭新连号人民币,我却一点都不开心
  9. 大数据项目之深圳地铁大数据客流分析系统
  10. 我为大家分享永久免费空间 云专家