Python使用SMTP模块、email模块发送邮件

smtplib模块:

主要通过SMTP类与邮件系统进行交互。使用方法如下:

1.实例化一个SMTP对象:

  s = smtplib.SMTP(邮件服务地址,端口号)

  s = smtplib.SMTP_SSL(邮件服务地址,端口号)

2.登陆邮件,权限验证:

  s.login(用户名,密码)

3.发送邮件:

  s.sendmail(发件人邮箱,收件人邮箱,发送内容)

4.断开连接:

  s.close()

email模块:

  email模块:支持发送的邮件内容为纯文本、HTML内容、图片、附件。email模块中有几大类来针对不同的邮件内容形式,常用如下:

  MIMEText:(MIME媒体类型)内容形式为纯文本、HTML页面。

  MIMEImage:内容形式为图片。

  MIMEMultupart:多形式组合,可包含文本和附件。

每一类对应的导入方式:

  from email.mime.text import MIMEText

  from email.mime.image import MIMEImage

  from email.mime.multipart import MIMEMultipart

MIMEText:

  MIMEText(msg,type,chartset)

  msg:文本内容

  type:文本类型默认为plain(纯文本)

   发送HTML格式的时候,修改为html,但同时要求msg的内容也是html的格式。

  chartset:文本编码,中文为“utf-8”

  # 构造TEXT格式的消息

  msg = MIMEText("hello.text","plain","utf-8")

  msg["Subject"] = "xxxxx"

  msg["From"] = "xxxx"

  msg["To"] = "xxxx"

  #发送以上构造的邮件内容要使用as_string将构造的邮件内容转换为string形式。

  s.sendmail("xxx","xxx",msg.as_string)

MIMEImage、MIMEMultipart:

  msg = MIMEMultipart()

  #实例化一个文本对象

  msg_sub = MIMEText("hello.text","plain","utf-8")

  #将text消息添加到MIMEMultipart中,作为邮件正文。

  msg.attach(msg_sub)

  #图片作为附件

  import os

  img_datas = open(os.getcwd()+ "/reports/xxxx.png","rb").read()

  msg_img = MIMEImage(img_data)

  msg_img.add_header(‘Content-Disposition‘,‘attachment‘, filename = "xxxx.png" )

  msg_img.add_header(‘Content-ID‘,‘<0>‘)

  #将图片添加到MIMEMultiplart中,作为附件发送。

  msg.attach(mag_img)

源代码如下:

发送文本邮件:

 1 import smtplib
 2 from email.mime.text import MIMEText
 3
 4 sender = ‘[email protected]‘   #发送人邮箱
 5 passwd = ‘lkugmgywydhfff‘ #发送人邮箱授权码
 6 receivers = ‘[email protected]‘ #收件人邮箱
 7
 8 subject = ‘python发邮件测试‘ #主题
 9 content = ‘这是我使用python smtplib模块和email模块自动发送的邮件‘    #正文
10
11 msg = MIMEText(content,‘plain‘,‘utf-8‘)
12 msg[‘Subject‘] = subject
13 msg[‘From‘] = sender
14 msg[‘TO‘] = receivers
15
16 try:
17     s = smtplib.SMTP_SSL(‘smtp.qq.com‘,465)
18     s.login(sender,passwd)
19     s.sendmail(sender,receivers,msg.as_string())
20     print(‘发送成功‘)
21
22 except Exception:
23     print(‘发送失败‘)

发送HTML邮件:

 1 import smtplib
 2 from email.mime.text import MIMEText
 3 from email.header import Header
 4
 5 sender = ‘xxxx@qq.com‘ #发件邮箱
 6 passwd = ‘lkugmgywydhfff‘ #发送人邮箱授权码
 7 receivers = ‘[email protected]‘   #收件邮箱
 8
 9 subject = ‘python发邮Html邮件测试‘ #主题
10
11 content = """         #内容,HTML格式
12 <p>Python 邮件发送测试...</p>
13 <p><a href="http://www.baidu.com">这是一个链接</a></p>
14 """
15
16 msg = MIMEText(content,‘html‘,‘utf-8‘)
17 # msg[‘Subject‘] = subject
18 msg[‘Subject‘] = Header(subject,‘utf-8‘)
19 # msg[‘From‘] = sender
20 msg[‘From‘] = Header(‘大傻子‘,‘utf-8‘)
21 # msg[‘To‘] = receivers
22 msg[‘To‘] = Header(‘二愣子‘,‘utf-8‘)
23 try:
24     s = smtplib.SMTP_SSL(‘smtp.qq.com‘,465)
25     s.login(sender,passwd)
26     s.sendmail(sender,receivers,msg.as_string())
27     print(‘Send Success‘)
28
29 except:
30     print(‘Send Failure‘)

发送图片邮件:

 1 import smtplib
 2 from email.mime.image import MIMEImage
 3 from email.mime.text import MIMEText
 4 from email.mime.multipart import MIMEMultipart
 5
 6 sender = ‘[email protected]‘
 7 passwd = ‘lkugmgywydhfff‘
 8 receivers = ‘[email protected]‘
 9 subject = ‘python发邮带img的邮件测试‘ #主题
10
11 # 创建一个带附件的实例
12 msg = MIMEMultipart()
13 msg[‘Subject‘] = subject
14 msg[‘From‘] = sender
15 msg[‘To‘] = receivers
16
17 # 创建正文
18 msg.attach(MIMEText(‘使用python smtplib模块和email模块自动发送邮件测试‘,‘plain‘,‘utf-8‘))
19
20 # 创建图片附件
21 import os
22 img_file = open(os.getcwd()+"/a4.jpg",‘rb‘).read()
23 msg_img = MIMEImage(img_file)
24 msg_img.add_header(‘Content-Disposition‘,‘attachment‘, filename = "a4.jpg")
25 msg_img.add_header(‘Content-ID‘, ‘<0>‘)
26 msg.attach(msg_img)
27
28 try:
29     s = smtplib.SMTP_SSL(‘smtp.qq.com‘,465)
30     s.set_debuglevel(1) #输出发送邮件详细过程
31     s.login(sender,passwd)
32     s.sendmail(sender,receivers,msg.as_string())
33     print(‘Send Succese‘)
34
35 except:
36     print(‘Send Failure‘)

发送带附件的邮件:

 1 import smtplib
 2 from email.mime.text import MIMEText
 3 from email.mime.multipart import MIMEMultipart
 4 from email.header import Header
 5
 6 sender = ‘[email protected]‘  #发件邮箱
 7 passwd = ‘lkugmgywydhfff‘  # 邮箱授权码
 8 receivers = ‘[email protected]‘  #收件邮箱
 9
10 subject = ‘python发带附件的邮件测试‘ #主题
11 # 创建一个带附件的实例
12 msg = MIMEMultipart()
13 msg[‘Subject‘] = subject
14 msg[‘From‘] = sender
15 msg[‘To‘] = receivers
16
17 #创建正文,将文本文件添加到MIMEMultipart中
18 msg.attach(MIMEText(‘使用python smtplib模块和email模块自动发送邮件测试‘,‘plain‘,‘utf-8‘))
19
20 #构造附件1,传送当前目录下  文件
21 att1 = MIMEText(open(‘testdata.xlsx‘,‘rb‘).read(),‘base64‘,‘utf-8‘) # rb以二进制方式读取
22 # att1["Content-Type"] = ‘application/octet-stream‘
23 # filename为附件名称,可以任意写,写什么名字,邮件中显示什么名字
24 att1["Content-Disposition"] = ‘attachment; filename = "testdata.xlsx" ‘
25 #将附件添加到MIMEMultipart中
26 msg.attach(att1)
27
28 #构造附件2
29 att2 = MIMEText(open(‘db.cfg‘,‘rb‘).read(),‘base64‘,‘utf-8‘)
30 # att2["Content-Type"] = ‘application/octet-stream‘
31 att2["Content-Disposition"] = ‘attachment; filename = "db.cfg" ‘
32 #将附件添加到MIMEMultipart中
33 msg.attach(att2)
34
35 try:
36     s = smtplib.SMTP_SSL(‘smtp.qq.com‘,465)
37     s.set_debuglevel(1) #输出发送邮件详细过程
38     s.login(sender,passwd)
39     s.sendmail(sender,receivers,msg.as_string())
40     print(‘Send Succese‘)
41
42 except:
43     print(‘Send Failure‘)

原文地址:https://www.cnblogs.com/lizhe860/p/9079234.html

时间: 2024-12-12 08:06:18

Python使用SMTP模块、email模块发送邮件的相关文章

使用python的smtp模块发送邮件

使用Python的smtp模块,可以十分方便的编写自己的smtp客户端,来发送邮件.现在发现,不能使用腾讯的smtp服务器去法送,但是可以使用163的smtp服务器去发送邮件. 直接上代码吧 #!/usr/bin/env python ''' a simple smtp client ''' import smtplib from email.mime.text import MIMEText def sendMail(user,pwd,to,subject,text): msg=MIMETex

Python_使用smtplib和email模块发送邮件

[http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用来接收邮件.大多数的邮件发送服务器 (Outgoing Mail Server) 都是使用SMTP协议.SMTP协议的默认TCP端口号是25. SMTP协

Python3 使用smtplib和email模块发送邮件

SMTP (Simple Mail Transfer Protocol) 邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用来接收邮件.大多数的邮件发送服务器 (Outgoing Mail Server) 都是使用SMTP协议.SMTP协议的默认TCP端口号是25. SMTP协议的一个重要特点是它能够接力传送邮件.它工作在两种情况下:一是电子邮件从客户机传输到服务器:二是从某一个服务器传输到另

python email模块

python email模块 翻译官方文档 email模块 电子邮件包是一个用于管理电子邮件消息的库.它的特殊设计不用于向SMTP (RFC 2821).NNTP或其他服务器发送任何电子邮件消息;这些是模块的函数,如smtplib和nntplib.电子邮件包尝试尽可能符合RFC,支持RFC 5233和RFC 6532,以及与mime相关的RFC 2045.RFC 2046.RFC 2047.RFC 2183和RFC 2231. 电子邮件包的总体结构可以分为三个主要组件,以及控制其他组件行为的第四

使用python调用email模块实现附件发送

  摘要:              平时运行一些脚本,需要把结果发送到邮箱,可以用python来处理. 需要模块: import datetime import time import sys import mimetypes import smtplib import email.MIMEMultipart import email.MIMEText from email.mime.text import MIMEText from email.mime.multipart import M

smtplib与email模块(实现邮件的发送)

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 1.smtplib模块 smtplib模块定义了一个简单的SMTP客户端,可以用来在互联网上发送邮件. 定义的类有如下: class smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])class smtpl

Python 通过 SMTP 发送邮件

Python版本:Python3.5.2 简介 SMTP是发送邮件的协议,Python 内置对 SMTP 的支持,可以发送纯文本邮件.HTML 邮件以及带附件的邮件. Python 对 SMTP 支持有 smtplib 和 email 两个模块,email 负责构造邮件,smtplib 负责发送邮件. 我使用的是 QQ 邮箱来完成本次实验,首先应该配置好自己的邮箱以启用 SMTP 功能,具体步骤如下: 登录到 QQ 邮箱的首页,找到设置功能: 进入到设置,切换到帐户标签页: 下拉找到如下选项,并

python学习笔记之电子邮件模块smtplib

在系统管理领域,我们常常用邮件来发送管理信息.业务质量报表等,方便运维人员第一时间了解业务的服务状态.通过python的smtplib模块来实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送的功能. smtplib模块的常用类与方法 SMTP.connect([host[,port]])方法,连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认为25,也可以直接使用host:port形式来表示,例如:SMTP.connect("s

python之路:Day05 --- 常用模块

本节内容 1.模块介绍 2.sys 3.os 4.time & datetime 模块 5.random 6.shutil 7.hashlib 8.logging 9.re正则表达式 10.shelve 11.xml 处理 12.yaml 处理 13.configpareser 14.subprocess 一.模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能