返回顶部
首页 > 资讯 > 后端开发 > Python >python学习-smtplib模块
  • 101
分享到

python学习-smtplib模块

模块pythonsmtplib 2023-01-31 06:01:56 101人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

 python的stmplib模块可以实现邮件的发送功能,可以模拟一个smtp客户端。在Python2.3或者更高版本默认自带smtplib模块,无需额外安装。一、smtplibi模块的常用类与方法    smtp类定义:smtplib([

 python的stmplib模块可以实现邮件的发送功能,可以模拟一个smtp客户端。在Python2.3或者更高版本默认自带smtplib模块,无需额外安装。


一、smtplibi模块的常用类与方法

    smtp类定义:smtplib([host[,port[,local_hostname[,timeout]]]),作为smtp的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可以向服务器发送相关请求,比如登录、校验、发送、退出等。host参数为远程smtp主机地址,比如smtp.163.com;port为连接端口,默认为25;local_hostname的作用是在本地主机的FQDN(完整的域名)发送HELO/EHLO(标识用户身份)指令,timeout为连接或尝试在多少秒超时。SMTP类具有如下方法:

SMTP.connect([host[,port]])方法

    连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认25,也可以直接使用host:port形式来表示,例如SMTP.connect("smtp.163.com","25")。

SMTP.login(user,password)方法

    远程smtp主机的校验方法,参数为用户名与密码,如SMTP.login("python_2014@153.com","sdjkg358")。

SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])方法

    实现邮件的发送功能,参数依次是发件人、收件人、邮件内容,例如:SMTP.sendmail("python_2014@163.com","demo@domail.com",body),其中body内容定义如下:

"""From:python_2014@163.com
TO:demo@domail.com
Subject:test mail

test mail body"""

SMTP.starttls([keyfile[,cerfile]])方法

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

SMTP.quit()方法

断开smtp服务器的连接


代码示例-使用tls连接,端口为25

#!/usr/bin/python
#coding=utf-8
import smtplib
import string

HOST = "smtp.xxxxxxxx.com" #定义smtp主机
SUBJECT = "Test email from Python" #定义邮件主题
TO = "yanGChao@chucloud.com.cn" #定义邮件收件人
FROM = "xxxx.xxxxxx@chucloud.com.cn" #定义邮件发件人
text = "Python rules them all!"     #邮件内容
BODY = string.join((                #组装sdemail方法的邮件内容,各段以"\r\n"进行分隔
        "From: %s" % FROM,          
        "To: %s" % TO,
        "Subject: %s" % SUBJECT ,
        "",
        text
        ), "\r\n")
server = SMTP_SSL()            #创建一个SMTP()对象
server.connect(HOST,"25")           #通过connect方法连接smtp主机
server.starttls()                   #启动安全传输魔术
server.login("xxxx.xxxxx@chucloud.com.cn","xxxxxxxxxxx")   #邮箱账号登录校验
server.sendmail(FROM, [TO], BODY)  #邮件发送
server.quit()                      #断开连接


代码示例,使用第二种ssl加密,端口465,这是最常用的方式

#!/usr/bin/python
#coding=utf-8
import smtplib
import string
from smtplib import SMTP_SSL  #采用SSL加密模块
HOST = "smtp.xxxxxxxx.com" #定义smtp主机
SUBJECT = "Test email from Python" #定义邮件主题
TO = "yangchao@chucloud.com.cn" #定义邮件收件人
FROM = "xxxxxxx.xxxxxxx@chucloud.com.cn" #定义邮件发件人
text = "Python rules them all!"     #邮件内容
BODY = string.join((                #组装sdemail方法的邮件内容,各段以"\r\n"进行分隔
        "From: %s" % FROM,          
        "To: %s" % TO,
        "Subject: %s" % SUBJECT ,
        "",
        text
        ), "\r\n")
server = SMTP_SSL()            #创建一个SMTP()对象,采用SSL加密
server.connect(HOST,"465")           #通过connect方法连接smtp主机
server.login("xxx.xxxxxxxxx@chucloud.com.cn","xxxxxxxxxx")   #邮箱账号登录校验
server.sendmail(FROM, [TO], BODY)  #邮件发送
server.quit()                      #断开连接


image.png

二、定制个性化邮件格式方法

    通过邮件传输的简单文本已经无法满足我的需求,比如需要经常定制业务质量报表,在邮件主体中会包含html、图像、声音以及附件格式等,MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)则实现了这一点。以下为Python中常用的MIME实现类。

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

    作用是生成包含多个部分的邮件体的MIME对象,参数_subtype指定要添加到“Content-type:multipart/subtype”报头的可选三种子类型,分别为mixed,related,alternative,默认值为mixed。定义mixed实现构建一个带有附件的邮件体;定义related实现构建内嵌资源的邮件体;定义alternative则实现构建纯文本与超文本共存的邮件体。

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

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

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

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

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

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


    纯文本的邮件已经不能满足多样化的需求,以下为代码示例,通过引用email.mime的MIMEText类来实现HTML格式的邮件。

#!/usrbin/python
#coding: utf-8
import smtplib
from smtplib import SMTP_SSL
from email.mime.text import MIMEText   #导入MIMEText类

HOST = "smtp.xxxxxxxx.com"             #定义smtp主机
SUBJECT = u"官网流量数据报表"           #定义邮件主题
TO = "yangchao@chucloud.com.cn"         #定义邮件收件人
FROM = "xxxxxxxxxxxxx@chucloud.com.cn"     #定义邮件发件人

msg = MIMEText("""                                                      #创建一个MIMEText对象,分别指定HTML内容,类型(文本或html)
    <table width="800" border="0" cellspacing="0" cellpadding="4">      #字符编码
      <tr>
        <td bgcolor="#CECFAD" height="20" style="font-size:14px">*官网数据  <a href="monitor.domain.com">更多>></a></td>
      </tr>
      <tr>
        <td bgcolor="#EFEBDE" height="100" style="font-size:13px">
        1)日访问量:<font color=red>152433</font>  访问次数:23651 页面浏览量:45123 点击数:545122  数据流量:504Mb<br>
        2)状态码信息<br>
          500:105  404:3264  503:214<br>
        3)访客浏览器信息<br>
          IE:50%  firefox:10% chrome:30% other:10%<br>
        4)页面信息<br>
          /index.PHP 42153<br>
          /view.php 21451<br>
          /login.php 5112<br>
	</td>
      </tr>
    </table>""","html","utf-8")
msg['Subject'] = SUBJECT  #邮件主题
msg['From']=FROM          #邮件发件人,邮件头部可见
msg['To']=TO              #邮件收件人,邮件头部可见
try:
    server = SMTP_SSL()   #采用SSL加密模块
    server.connect(HOST,"465") #通过connect方法连接smtp主机
    server.login("xxxxxxxxxxxx@chucloud.com.cn","xxxxxxxxxx")  #邮箱账号登录校验
    server.sendmail(FROM, TO, msg.as_string())                     #邮件发送
    server.quit()                                                  #断开连接·
    print "邮件发送成功!"
except Exception, e:  
    print "失败:"+str(e)

image.png

--结束END--

本文标题: python学习-smtplib模块

本文链接: https://lsjlt.com/news/190557.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python学习-smtplib模块
     python的stmplib模块可以实现邮件的发送功能,可以模拟一个smtp客户端。在python2.3或者更高版本默认自带smtplib模块,无需额外安装。一、smtplibi模块的常用类与方法    smtp类定义:smtplib([...
    99+
    2023-01-31
    模块 python smtplib
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • Python 模块学习
        模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、sh...
    99+
    2023-01-31
    模块 Python
  • python模块学习
    系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.st...
    99+
    2023-01-31
    模块 python
  • python的邮件模块smtplib&e
    import smtplib import string from email.mime.text import MIMEText def send_mail(host, sender, sender_passwd, receiver,...
    99+
    2023-01-31
    模块 邮件 python
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • python模块学习(1)
    模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变...
    99+
    2023-01-31
    模块 python
  • python学习-re模块
    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python...
    99+
    2023-01-31
    模块 python
  • Python学习-pycurl模块
    pycurl是一个用c语言编写的libcurl Python实现,功能非常强大,支持操作协议有FTP,HTTP,HTTPS,TELNET等。模块的常用方法说明:close()方法,对应libcurl包中的curl_easy_cleanup方...
    99+
    2023-01-31
    模块 Python pycurl
  • python optparse模块学习
    本文参考:http://docs.python.org/2/library/optparse.htmlPython 有两个内建的模块用于处理命令行参数:一个是 getopt,getopt只能简单处理 命令行参数。另一个是 optparse,...
    99+
    2023-01-31
    模块 python optparse
  • Python pycurl模块 学习
    pycurl模块的安装方法如下: easy_install pycurl #easy_install安装方法 pip install pycurl #pip安装方法 #源码安装方法 # 要求curl-config包支持,需要源码方式重新安...
    99+
    2023-01-31
    模块 Python pycurl
  • python学习-psuti模块
    psutil(进程和系统实用程序)是一个跨平台的库,用于 在Python中检索有关运行进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多...
    99+
    2023-01-31
    模块 python psuti
  • python学习-OS模块
    OS模块是python内建模块,主要是对大量文件和大量路径进行操作os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'...
    99+
    2023-01-31
    模块 python OS
  • Python学习—json模块
    json模块 四个常用方法 son.dumps() 将python对象编码成为json的字符串格式(最常用的是字典,列表集合等都可以) json.dump() 将python对象编码成为json的字符串格式并写入文件 json...
    99+
    2023-01-31
    模块 Python json
  • Python模块学习--email
    可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol)   邮件传送代理 (Mail Transfer Agent,MTA) 程序...
    99+
    2023-01-31
    模块 Python email
  • python模块学习(queue模块的Q
    学习版本3.5.2 PriorityQueue类和LifoQueue类继承Queue类然后重写了_init、_qsize、_put、_get这四个类的私有方法 Queue:先进先出队列的同步实现,通过双向列表实现的 # Initi...
    99+
    2023-01-31
    模块 python queue
  • python中如何使用smtplib模块
    python中如何使用smtplib模块,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。说明创建SMTP的操作对象,连接smtp目标服务器,可以是163、QQ等。根据您的账户...
    99+
    2023-06-20
  • Python学习—paramiko模块实
    paramiko模块 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 import paramiko # ssh root@ip # 创建一个ssh对象 ...
    99+
    2023-01-31
    模块 Python paramiko
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作