Python使用SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python创建 SMTP 对象语法如下:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
- host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:w3cschool.cc,这个是可选参数。
- 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"
相关推荐
Python的SMTP发送邮件程序
### Python使用SMTP发送邮件的知识点总结 #### 一、SMTP简介 SMTP,全称为Simple Mail Transfer Protocol(简单邮件传输协议),是一种互联网标准协议,用于在邮件服务器之间传输电子邮件。通过一系列命令,SMTP...
Python 如何使用SMTP协议为注册用户发送邮件 Python源码Python 如何使用SMTP协议为注册用户发送邮件 Python源码Python 如何使用SMTP协议为注册用户发送邮件 Python源码Python 如何使用SMTP协议为注册用户发送邮件 ...
Python实现SMTP发送邮件的详细教程旨在帮助开发者了解如何通过Python编程语言发送电子邮件。SMTP(Simple Mail Transfer Protocol)是一种用于在互联网上传输邮件的标准协议。在Python中,我们可以利用内置的`...
python3使用smtpib利用第三方smtp服务器发送带附件邮件。
本篇将深入讲解如何利用Python的requests库发送钉钉消息以及如何使用email和smtplib库发送邮件,特别是与163邮箱服务的集成。 首先,我们来探讨如何使用requests库发送钉钉消息。钉钉提供了Webhook接口,通过...
发送邮件的步骤包括建立SMTP连接、登录SMTP服务器、发送邮件以及关闭连接。以下是一个完整的发送邮件的示例代码: ```python import smtplib # 邮箱账号信息 from_addr = 'test_from_addr@qq.com' password = '...
- **发送邮件**:使用 `smtplib.SMTP_SSL` 建立安全连接,并通过 `sendmail` 方法发送邮件。 #### 八、常见问题解答 1. **如何解决登录失败的问题?** - 确认提供的用户名和密码正确无误。 - 对于某些邮件服务...
在这个“SMTP发送邮件程序”中,支持SSL和TLS意味着它能确保邮件传输过程的安全性,防止中间人攻击和数据泄露。 SMTP本身并不支持加密,因此在传输敏感信息如密码或私人邮件时,使用SSL或TLS加密是必要的。SSL已经...
在Python编程中,多进程是并行处理的一种方式,它...通过学习这个项目,开发者可以掌握如何在Python中有效地并行处理任务,以及如何利用SMTP协议发送邮件。这样的技能在数据分析、自动化任务调度等领域都有广泛应用。
以上就是Python使用SMTP发送邮件的基本步骤。在告警测试场景中,可能需要将邮件内容和发送行为自动化,比如根据某些条件触发邮件发送。你可以将这些步骤封装成一个函数,以便在满足特定条件时调用。 在实际应用中,...
以下是一个使用Python和`smtplib`库通过SMTP发送邮件的基本步骤: 1. 导入必要的库:`import smtplib, ssl` 2. 设置SMTP服务器的地址和端口,以及发件人的邮箱和密码。 3. 创建一个SMTP连接,可以使用`smtp_server ...
总的来说,Python通过SMTP发送邮件涉及的主要步骤包括:配置SMTP服务器信息、创建邮件内容、建立SMTP连接、登录邮箱、发送邮件并处理可能出现的异常。注意,每个邮箱服务商的SMTP设置可能略有不同,因此在实际操作时...
发送邮件:使用SMTP对象的sendmail方法发送邮件。将发件人、收件人和邮件内容作为参数传递给sendmail方法。 关闭SMTP连接:在完成邮件发送后,使用SMTP对象的quit方法关闭与SMTP服务器的连接。 请注意,在实际编写...
这个标题“smtp发送邮件源码例子”表明我们将探讨如何使用SMTP协议通过编程方式发送邮件。SMTP通常与邮件服务器一起工作,例如Google的Gmail、Microsoft的Outlook等,允许程序自动化地发送邮件。 描述中提到“例子...
在Python3中,可以使用smtplib库来通过SMTP发送邮件。发送HTML格式邮件是一种发送格式化邮件的方法,允许在邮件中使用HTML标签来增加格式和设计元素。 在使用Python3通过SMTP发送HTML格式邮件时,首先需要设置并...
当涉及到电子邮件收发时,Python提供了强大的库,如`smtplib`和`email`,使得我们可以方便地通过代码来发送邮件,包括报表等附件。本教程将深入探讨如何使用Python编写脚本来发送带有报表的邮件。 首先,我们需要...
在这个名为"SMTP发送邮件.rar"的压缩包中,我们可以推测包含的文件可能与使用SMTP服务来发送邮件的教程或代码示例有关。 SMTP协议的工作流程通常包括以下几个关键步骤: 1. **连接建立**:客户端首先与SMTP服务器...
Python发送邮件是编程中常见的需求,特别...总结来说,Python发送邮件涉及到smtplib和email模块的使用,通过SMTP协议与邮件服务器交互,构建邮件内容并发送。理解这些概念和方法,将有助于实现各种复杂的邮件发送需求。
基于SMTP发送邮件,意味着你需要创建一个能够连接到SMTP服务器并遵循SMTP协议的程序或应用,以发送邮件给指定的收件人。 首先,理解SMTP的工作流程至关重要。SMTP主要负责邮件的投递,它使用TCP/IP连接来通信。当...