• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用Python发送Email电子邮件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Python在标准库中包含几个模块,用于处理电子邮件和电子邮件服务器。

smtplib概述

smtplib模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序将邮件发送到任何Internet计算机。

SMTP代表简单邮件传输协议。

smtplib模块可用于与邮件服务器通信以发送邮件。

Python使用smtplib模块基于SMTP服务器发送邮件。

实际使用情况取决于电子邮件的复杂程度和电子邮件服务器的设置,此处的说明基于通过Gmail发送电子邮件。

smtplib用法

这里的例子来自于post at wikibooks.org


"""The first step is to create an SMTP object, each object is used for connection 
with one server."""

import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)

#Next, log in to the server
server.login("youremailusername", "password")

#Send the mail
msg = "
Hello!" # The /n separates the message from the headers
server.sendmail("[email protected]", "[email protected]", msg)

要包含 来自(From) , 发送给(To) and 主题(Subject) 邮件头, 应该使用email包,
因为 smtplib 不能修改内容和邮件头。

电子邮件(email)包概述

Python的电子邮件包包含许多用于编写和解析电子邮件的类和函数。

电子邮件包的使用

我们首先只导入我们需要的类,这也使我们不必在以后使用完整的模块名称。


from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

然后我们编写一些基本的消息头:


fromaddr = "[email protected]"
toaddr = "[email protected]"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Python email"

接下来,我们将电子邮件的正文附加到MIME消息:


body = "Python test mail"
msg.attach(MIMEText(body, 'plain'))

为了发送邮件,我们必须将对象转换为字符串,然后使用与上面相同的prodecure使用SMTP服务器发送..


import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login("youremailusername", "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)

验证电子邮件地址

SMTP协议包括向服务器询问地址是否有效的命令。

通常禁用VRFY以防止垃圾邮件发送者查找合法的电子邮件地址,但如果启用了VRFY,您可以向服务器询问地址和
接收状态代码,指示有效性以及用户的全名。

这个示例基于 post


import smtplib

server = smtplib.SMTP('mail')
server.set_debuglevel(True)  # show communication with the server
try:
    dhellmann_result = server.verify('dhellmann')
    notthere_result = server.verify('notthere')
finally:
    server.quit()

print 'dhellmann:', dhellmann_result
print 'notthere :', notthere_result

使用Gmail发送邮件

这个示例来自 http://rosettacode.org/wiki/Send_an_email#Python

import smtplib
 
def sendemail(from_addr, to_addr_list, cc_addr_list,
              subject, message,
              login, password,
              smtpserver='smtp.gmail.com:587'):
    header  = 'From: %s
' % from_addr
    header += 'To: %s
' % ','.join(to_addr_list)
    header += 'Cc: %s
' % ','.join(cc_addr_list)
    header += 'Subject: %s

' % subject
    message = header + message
 
    server = smtplib.SMTP(smtpserver)
    server.starttls()
    server.login(login,password)
    problems = server.sendmail(from_addr, to_addr_list, message)
    server.quit()
示例上述脚本的用法

sendemail(from_addr    = '[email protected]', 
          to_addr_list = ['[email protected]'],
          cc_addr_list = ['[email protected]'], 
          subject      = 'Howdy', 
          message      = 'Howdy from a python function', 
          login        = 'pythonuser', 
          password     = 'XXXXX')
收到的电子邮件样本

sendemail(from_addr    = '[email protected]', 
          to_addr_list = ['[email protected]'],
          cc_addr_list = ['[email protected]'], 
          subject      = 'Howdy', 
          message      = 'Howdy from a python function', 
          login        = 'pythonuser', 
          password     = 'XXXXX')
来源
Python on Wikibooks.org
Rosettacode.org
Docs.python.org
http://docs.python.org/2/library/email.mime.html

 

参考资料

  • Using Python to Send Email

鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
Scala编程常见问题整理【十七】发布时间:2022-05-14
下一篇:
C++异常的常用实例(C++ Exception)发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap