用python发邮件_使用Python发送Email电子邮件

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("you@gmail.com", "target@example.com", msg)

要包含来自(From), 发送给(To) and 主题(Subject) 邮件头, 应该使用email包,

因为 smtplib 不能修改内容和邮件头。

电子邮件(email)包概述

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

电子邮件包的使用

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

from email.MIMEMultipart import MIMEMultipart

from email.MIMEText import MIMEText

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

fromaddr = "you@gmail.com"

toaddr = "target@example.com"

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发送邮件

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 = 'python@RC.net',

to_addr_list = ['RC@gmail.com'],

cc_addr_list = ['RC@xx.co.uk'],

subject = 'Howdy',

message = 'Howdy from a python function',

login = 'pythonuser',

password = 'XXXXX')

收到的电子邮件样本

sendemail(from_addr = 'python@RC.net',

to_addr_list = ['RC@gmail.com'],

cc_addr_list = ['RC@xx.co.uk'],

subject = 'Howdy',

message = 'Howdy from a python function',

login = 'pythonuser',

password = 'XXXXX')

来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值