Python学习笔记-邮件模块SMTP

smtplib模块:

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.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 协议中定义的格式。

SMTP类还具有如下方法:

SMTP.connect([host[,post]])    #连接远程smtp主机方法,参数为远程主机地址,端口

SMTP.login(user,password)    #远程smtp主机的校验方法,参数为用户名和密码

SMTP.starttls([keyfile[,certfile]])     #启用TLS(安全传输)模式,所有SMTP指令都将加密传输,例如使用gmail的smtp服务时需要启动此项才能正常发送邮件

SMTP.quit()     #断开SMTP服务器的连接

MIME:

MIME,英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

Python常用的MIME实现类:

1.

email.mime.multipart.MIMEMultipart([_subtype[,boundary[,_subparts[,_params]]]])

#作用是生成包含多个部分的邮件体的MIME对象,参数_subtype指定要添加到“Content-type:multipart/subtype”报头的可选的三种子类型,分别为mixed、related、altermative,默认值为mixed。

#定义mixed实现构建一个带附件的邮件体;

#定义related实现构建内嵌资源的邮件体;

#定义alternative则实现构建纯文本与超文本共存的邮件本

2.

email.mime:audio.MIMEAudio(_audiodata[,_subtype[,_encoder[,**_params]]])

#创建包含音频数据的邮件体,_audiodata包含原始二进制音频数据的字节字符串。

3.

email.mime:image.MIMEImage(_imagedata[,_subtype[,_encoder[,**_params]]])

#创建包含图片数据的邮件体,_imagedata包含原始图片频数据的字节字符串。

4.

email.mime.text.MIMEText(_text[,_subtype[,_charset]])

#创建包含文本数据的邮件体,_text是包含消息负载的字符串,_subtype指定文本类型,支持plain(默认值)或html类型的字符串

简单的常用邮件实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host = "smtp.**.com"  # 设置smtp服务器,例如:smtp.163.com
mail_user = "****@163.com"  # 用户名
mail_pass = "****"  # 口令

sender = ‘****@163.com‘
receivers = ‘****@qq.com‘  # 接收邮件

message = MIMEText(‘This is a Python Test Text‘)
message[‘From‘] = sender
message[‘To‘] = receivers

subject = ‘One Test Mail‘
message[‘Subject‘] = Header(subject)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
    smtpObj.login(mail_user, mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print ("邮件发送成功")
except smtplib.SMTPException as e:
    print ("Error: 无法发送邮件"+str(e))
时间: 2024-10-23 20:18:52

Python学习笔记-邮件模块SMTP的相关文章

Python学习笔记—itertools模块

这篇是看wklken的<Python进阶-Itertools模块小结> 学习itertools模块的学习笔记 在看itertools中各函数的源代码时,刚开始还比较轻松,但后面看起来就比较费劲... 1.itertools.count(start=0,step=1) 此函数用来创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算 如果超出了sys.maxint,计数器将溢出并继续行-sys.maxint-1开始计算 定义: def count(start=0, step=1):

python学习笔记(八)-模块

大型python程序以模块和包的形式组织.python标准库中包含大量的模块.一个python文件就是一个模块.1.标准模块 python自带的,不需要你安装的2.第三方模块 需要安装,别人提供的. pip install xxx 自动化安装的 手动安装 首先下载安装包 解压 在命令行里面进入到这个解压之后的目录 执行python setup.py install3.自己写的 自己写的python文件import xx 导入一个文件 ,导入文件的实质是什么,把这个python运行一次import

Python学习笔记-常用模块

1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作为输入执行.这就是传说中的 脚本.随着你的程序变得越来越长,你可能想要将它分割成几个更易于维护的文件.你也可能想在不同的程序中使用顺手的函数,而不是把代码在它们之间中拷来拷去. 为了满足这些需要,Python 提供了一个方法可以从文件中获取定义,在脚本或者解释器的一个交互式实例中使用.这样的文件被称

python学习笔记(五) - 模块

一. 使用模块 引入sys模块,使用import #!/usr/bin/env python # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args = sys.argv if len(args)==1: print 'Hello, world!' elif len(args)==2: print 'Hello, %s!' % args[1] else: p

Python学习笔记2—模块

模块的使用 引用模块的两种形式 形式一: import module_name 形式二: from module1 import module11   (module11是module的子模块) 例:引用精确除法模块 >>> 5/2 2 >>> from __future__ import division >>> 5/2 2.5 >>> 5//2 2 >>> 如过需要进行开方,乘方,对数等运算就需要用到Python

python学习笔记glob模块

python有许多的类库,现将学习记录下来,以供以后回顾复习: 1.glob模块 用于文件名操作,匹配指定目录下的文件,常用的有两个函数: glob(pattern),返回匹配的文件的列表. iglob(pattern),返回生成器,可以遍历匹配的文件. 示例代码: glob()bogon:datasets xuguoqiang$ ls matrixA.txt matrixB.txt test words.txt files = glob.glob('*.txt') >>> for fi

python学习笔记(模块初识、pyc和PyCodeObject是什么)

一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径,在pycharm输出结果是绝对路径,因为在pycharm中调用 print(sys.argv[2]) #可以从数据列表中取值,[2]指取第三位.        标准库存放位置:C:\Python35\Lib 第三方库存放位置C:\Python35\Lib\site-p

【python学习笔记】模块导入搜索路径的搜索顺序是什么?

搜索顺序应该是? 内置模块 ->主目录 ->PYTHONPATH环境变量 ->标准库 ->.pth文件指定的内容 所以如果主目录里有一个自定义的模块文件文件,应该会先加载,然后后面标准库的模块文件可能就不会加载了,也就是隐藏了. 还是实验一下: 创建一个sys.py在主目录下,以下是在windows的py3.5上实验的,sys.py内容: # filename sys.py in current working directory def func():     print('Th

python 学习笔记 os模块常用项

删除指定目录树中的空目录 #!/usr/bin env python import os import sys dir =sys.argv[1] if os.path.isdir(dir):    for root,dirs,files in os.walk(dir,topdown=False):#从最里向外遍历       for d in dirs:          if not os.listdir(os.path.join(root,d)):#判断目录是否为空