Python发送邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python发送邮件相关的知识,希望对你有一定的参考价值。

Python2.3+默认自带smtplib模块,可以用此模块来模拟smtp客户端(如foxmail)实现邮件发送功能。

1.smtplib模块的常用类和方法

SMTP类定义:smtplib.SMTP([host[,port[,local_hostname[,timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可以向服务器发送相关请求,比如登录、校验、发送、退出等。

  • host参数为远程smtp主机地址,比如smtp.163.com。
  • port参数为连接端口,默认为25。
  • local_hostname的作用是在本地主机的FQDN(完整的域名)发送HELO/EHLO(标识用户身份)指令。
  • timeout为连接或尝试在多少秒超时。

 

SMTP类具有以下方法:

  • SMTP.connect([host[,port]]):连接远程smtp主机的方法,host为远程主机地址,port为远程主机smtp端口,默认为25。也可以直接使用host:port形式来表示,例如:SMTP.connect("smtp.163.com","25")。
  • SMTP.login(user,password):远程smtp主机的校验方法,参数为用户名和密码。
  • SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,tcpt_options]):实现邮件的发送功能,参数依次为发件人、收件人、邮件内容。
  • SMTP.starttls([keyfile[,certfile]]):启用TLS(安全传输)模式,所有SMTP指令都将加密传输,例如使用gmail的smtp服务时需要启动此项才能正常发送邮件。如:SMTP.starttls()。
  • SMTP.quit():断开smtp服务器的连接。

 

2.示例

这个示例用网易163邮箱向QQ邮箱发送了一封测试邮件。

技术分享
 1 #!/usr/bin/python
 2 import smtplib
 3 import string
 4 
 5 HOST = "smtp.163.com"
 6 SUBJECT = "Test email-2 from python"
 7 FROM = "[email protected]"
 8 password = "yourPassword"
 9 TO = "[email protected]"
10 text = "Hello,this is a test mail!\\t\\rI love python!"
11 BODY = string.join((
12     "From: %s" % FROM,
13     "To: %s" % TO,
14     "Subject: %s" % SUBJECT,
15     "",
16     text
17 ),"\\r\\n")
18 server = smtplib.SMTP()
19 server.connect(HOST,"25")
20 server.starttls()
21 server.login(FROM,password)
22 server.sendmail(FROM,[TO],BODY)
23 server.quit()
sendMailDemo.py

结果如下:

技术分享

 

以上是关于Python发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

超实用的php代码片段

Javascript - 使用 HTML 片段通过电子邮件发送 JSON 输出

Github 大牛封装 Python 代码,实现自动发送邮件只需三行代码

C#和ASP.NET通过Gmail账户发送邮件的代码

python笔记- 发送邮件

实现Python代码发送邮件