Python发送邮件(Email SMTP)
2015-01-13 23:39
351 查看
Python发送邮件(Email SMTP)
Python发送邮件(Email SMTP) : 简单邮件传输协议(SMTP)是一种处理电子邮件发送电子邮件和邮件服务器之间的路由协议.Python提供的smtplib模块定义一个SMTP客户端会话的对象,可以使用任何互联网机器发送邮件与SMTP或ESMTP监听守护.
这里是一个简单的语法创建一个SMTP对象,以后可以用来发送电子邮件:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
下面是详细的参数:
host: 这是您的SMTP服务器的主机上运行。你可以说明指主机,像yiibai.com域名的IP地址。这是可选参数.
port:如果您所提供的主机参数,那么你需要说明指SMTP服务器监听端口。通常该端口会是25.
local_hostname:如果您的SMTP服务器是在本地机器上运行,那么你可以指定此选项的localhost.
一个SMTP对象调用sendmail的一个实例方法,这通常会被用来做信息邮寄工作。它有三个参数:
发送人 - 发件人地址的字符串.
接收人 - 一个字符串列表,可以是多个人.
信息/消息 - 消息作为字符串格式化为指定在不同的RFC.
例子:
下面是一个简单的方法来发送一个电子邮件,使用Python脚本。试一次看看:#!/usr/bin/python import smtplib sender = 'from@fromdomain.com' receivers = ['to@todomain.com'] message = """From: From Person To: To Person 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"
在这里,你已经放置在消息一个基本的电子邮件,使用三重引号,注意正确格式化的头。一个电子邮件需要的From,To,Subject头,从电子邮件的主体内容用一个空行隔开.
发送您使用smtpObj在本地机器上连接到SMTP服务器,然后使用sendmail的方法,随着消息的邮件,从地址,目的地址作为参数(即使从地址在电子电子邮件本身,这些并非总是用于路由邮件).
如果你没有在本地机器上运行一个SMTP服务器,可以使用的smtplib客户的沟通与远程SMTP服务器。除非你使用一个webmail服务(如Hotmail或Yahoo!邮箱),您的电子邮件提供商将与外发邮件服务器的详细信息,你可以提供他们所提供,如下:
smtplib.SMTP('mail.your-domain.com', 25)
使用Python发送HTML电子邮件:
当你发送文字信息,然后Python的所有内容将被视为简单的文字。即使你将包括在文本消息的HTML标签,它会显示简单的文本和HTML标记不会被格式化,根据HTML语法。但是Python提供了实际的HTML邮件发送HTML邮件的选项.在发送电子邮件时,您可以指定一个MIME版本,内容类型和字符集发送HTML电子邮件.
例子:
以下是例子作为电子邮件发送HTML内容。试一次看看:#!/usr/bin/python import smtplib message = """From: From Person To: To Person 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 This is HTML message.This is headline.
""" try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"
发送电子邮件附件:
混合型内容与发送电子邮件,要求设置Content-type头为multipart/mixed,然后可以指定文本和附件部分在边界.开始由一个唯一的数字,而不能出现在电子邮件消息部分的两个连字符的边界。表示电子邮件的最后一节的最后一个边界与两个连字符也必须结束.
附加文件应编码pack(“M”)功能的base64编码传输前.
例子:
以下是例子,这将作为附件发送文件/tmp/test.txt的中,试一次看看:#!/usr/bin/python import smtplib import base64 filename = "/tmp/test.txt" # Read a file and encode it into base64 format 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. """ # Define the main headers. part1 = """From: From Person To: To Person <amrood.admin@gmail.com> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=%s --%s """ % (marker, marker) # Define the message action part2 = """Content-Type: text/plain Content-Transfer-Encoding:8bit %s --%s """ % (body,marker) # Define the attachment section 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"
相关文章推荐
- 用smtplib和email封装python发送邮件模块类分享
- 用smtplib和email封装python发送邮件模块类分享
- python email ==> send 发送邮件 :) [smtplib, email 模块]
- python模块学习 ---- smtplib 邮件发送
- 使用.NET发送邮件 发送邮件,发邮件,EMail,SMTPMAIL,asp.net 选择自 kwklover 的 Blog
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- python smtp发送邮件
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- python模块学习 ---- smtplib 邮件发送(转)
- python模块学习 ---- smtplib 邮件发送
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- python模块学习 ---- smtplib 邮件发送
- 转:python模块学习 ---- smtplib 邮件发送
- Python用smtplib发送邮件
- python模块学习 ---- smtplib 邮件发送
- python - 如何通过GMail发送邮件:smtplib的使用
- python 利用smtplib发送邮件
- Python_使用smtplib和email模块发送邮件
- python模块学习 ---- smtplib 邮件发送
- python模块学习 ---- smtplib 邮件发送