python的smtplib供应了一种很方便的路子发送电子邮件。它对smtp协议进行了大略的封装。
Python创建 SMTP 工具语法如下:
import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数解释:
host: SMTP 做事器主机。 你可以指定主机的ip地址或者域名如:ziqiangxuetang.com,这个是可选参数。
port: 如果你供应了 host 参数, 你须要指定 SMTP 做事利用的端口号,一样平常情形下SMTP端口号为25。
local_hostname: 如果SMTP在你的本机上,你只须要指定做事器地址为 localhost 即可。
Python SMTP工具利用sendmail方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
参数解释:
from_addr: 邮件发送者地址。
to_addrs: 字符串列表,邮件发送地址。
msg: 发送
这里要把稳一下第三个参数,msg是字符串,表示邮件。我们知道邮件一样平常由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要把稳msg的格式。这个格式便是smtp协议中定义的格式。
实例
以下是一个利用Python发送邮件大略的实例:
#!/usr/bin/python
import smtplib
sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']
message = \"大众\"大众\公众From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
\"大众\公众\"大众
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print \公众Successfully sent email\公众
except SMTPException:
print \"大众Error: unable to send email\"大众
利用Python发送HTML格式的邮件
Python发送HTML格式的邮件与发送纯文本的邮件不同之处便是将MIMEText中_subtype设置为html。详细代码如下:
import smtplib
from email.mime.text import MIMEText
mailto_list=[\"大众YYY@YYY.com\公众]
mail_host=\公众smtp.XXX.com\"大众 #设置做事器
mail_user=\"大众XXX\"大众 #用户名
mail_pass=\公众XXXX\"大众 #口令
mail_postfix=\"大众XXX.com\"大众 #发件箱的后缀
def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容
me=\公众hello\"大众+\公众<\公众+mail_user+\"大众@\"大众+mail_postfix+\"大众>\公众 #这里的hello可以任意设置,收到信后,将按照设置显示
msg = MIMEText(content,_subtype='html',_charset='gb2312') #创建一个实例,这里设置为html格式邮件
msg['Subject'] = sub #设置主题
msg['From'] = me
msg['To'] = \公众;\"大众.join(to_list)
try:
s = smtplib.SMTP()
s.connect(mail_host) #连接smtp做事器
s.login(mail_user,mail_pass) #上岸做事器
s.sendmail(me, to_list, msg.as_string()) #发送邮件
s.close()
return True
except Exception, e:
print str(e)
return False
if __name__ == '__main__':
if send_mail(mailto_list,\"大众hello\公众,\公众<a href='http://www.cnblogs.com/xiaowuyi'>小五义</a>\公众):
print \公众发送成功\"大众
else:
print \公众发送失落败\"大众
或者你也可以在体中指定Content-type为text/html,如下实例:
#!/usr/bin/python
import smtplib
message = \"大众\公众\"大众From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
\公众\"大众\公众
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print \"大众Successfully sent email\公众
except SMTPException:
print \"大众Error: unable to send email\"大众
Python发送带附件的邮件
发送带附件的邮件,首先要创建MIMEMultipart()实例,然后布局附件,如果有多个附件,可依次布局,末了利用smtplib.smtp发送。
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
#创建一个带附件的实例
msg = MIMEMultipart()
#布局附件1
att1 = MIMEText(open('d:\\123.rar', 'rb').read(), 'base64', 'gb2312')
att1[\公众Content-Type\"大众] = 'application/octet-stream'
att1[\"大众Content-Disposition\"大众] = 'attachment; filename=\"大众123.doc\"大众'#这里的filename可以任意写,写什么名字,邮件中显示什么名字
msg.attach(att1)
#布局附件2
att2 = MIMEText(open('d:\\123.txt', 'rb').read(), 'base64', 'gb2312')
att2[\公众Content-Type\"大众] = 'application/octet-stream'
att2[\"大众Content-Disposition\"大众] = 'attachment; filename=\公众123.txt\"大众'
msg.attach(att2)
#加邮件头
msg['to'] = 'YYY@YYY.com'
msg['from'] = 'XXX@XXX.com'
msg['subject'] = 'hello world'
#发送邮件
try:
server = smtplib.SMTP()
server.connect('smtp.XXX.com')
server.login('XXX','XXXXX')#XXX为用户名,XXXXX为密码
server.sendmail(msg['from'], msg['to'],msg.as_string())
server.quit()
print '发送成功'
except Exception, e:
print str(e)
以下实例指定了Content-type header 为 multipart/mixed,并发送/tmp/test.txt 文本文件:
#!/usr/bin/python
import smtplib
import base64
filename = \公众/tmp/test.txt\"大众
# 读取文件内容并利用 base64 编码
fo = open(filename, \"大众rb\公众)
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent) # base64
sender = 'webmaster@tutorialpoint.com'
reciever = 'amrood.admin@gmail.com'
marker = \公众AUNIQUEMARKER\"大众
body =\"大众\"大众\"大众
This is a test email to send an attachement.
\公众\"大众\"大众
# 定义头部信息
part1 = \"大众\公众\"大众From: From Person <me@fromdomain.net>
To: To Person <amrood.admin@gmail.com>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
\公众\公众\"大众 % (marker, marker)
# 定义动作
part2 = \公众\"大众\"大众Content-Type: text/plain
Content-Transfer-Encoding:8bit
%s
--%s
\"大众\"大众\"大众 % (body,marker)
# 定义附近部分
part3 = \"大众\"大众\公众Content-Type: multipart/mixed; name=\\"大众%s\\"大众
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s
%s
--%s--
\"大众\"大众\公众 %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, reciever, message)
print \"大众Successfully sent email\"大众
except Exception:
print \"大众Error: unable to send email\公众
【干系推举】
1. 详细先容Python利用SMTP发送邮件实例
2. Python 利用SMTP发送邮件的代码小结
3. c#调用qq邮箱smtp发送邮件修正版代码
4. 分享Python实现SMTP发送邮件图文实例
5. php smtp发送邮件
6. Python SMTP邮件模块详解
7. python smtplib模块发送SSL/TLS安全邮件实例
更多技巧请《转发 + 关注》哦!