zoukankan      html  css  js  c++  java
  • 发送电子邮件模块smtplib

    简介

      电子邮件是最流行的互联网应用之一。在系统管理领域,我们常常使用邮件来发送告警信息、业务质量报表等,方便运维人员第一时间了解业务的服务状态。本节通过python的smtplib模块来实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送功能,这可以理解成foxmail的发送邮件功能,在第一次使用之前我们需要配置smtp主机地址、邮箱账号及密码等信息。Python 2.3或更高版本自带smtplib模块,无需额外安装。

    smtplib模块的常用类与方法

           SMTP类定义:smtp.SMTP([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@163.com","abcd1234")。

      SMTP.sendmail(from_addr,to_addr,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[,certfile]]) 方法启用TLS(安全传输)模式,所有SMTP指令都将加密传输,例如使用gmail的smtp服务时需要开启此项才能正常发送邮件,如SMTP.starttls()。

      SMTP.quit()方法,断开smtp服务器的连接。

    代码示例:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import smtplib
    import  string
    
    HOST = "smtp.exmail.qq.com" #定义smtp主机
    SUBJECT = "Test email from Python" #主题
    FROM = "test@qq.com"  #发件人地址
    TO = "test1@arcvideo.com" #收件人地址
    text = "Python rules them all!" #邮件内容
    BODY = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT,
        "",
        text),"
    ")
    
    server = smtplib.SMTP() #创建一个SMTP()对象
    server.connect(HOST,"25") #通过connect 方法连接smtp主机
    server.starttls()   #开启安全传输模式
    server.login("test@arcvideo.com","pwd") #邮箱账号登录校验
    server.sendmail(FROM, [TO], BODY) #邮件发送
    server.quit() #断开smtp连接
    

      将会收到一封类似这样的邮件

     定制个性化邮件格式方法

         通过邮件传输简单的文本已经无法满足我们的需求,比如我们时长会定制业务质量报表,在邮件主体中包含HTML、图像、声音以及附件格式等,MIME(Mutipurpose Internet Mail Extensions,多用途互联网邮件扩展)作为一种新的扩展邮件格式很好的补充了这一点。python中常用的MIME实现类:

  • 相关阅读:
    SP6779 GSS7
    P2218 [HAOI2007]覆盖问题
    day10-包的定义和内部类
    day09-final、多态、抽象类、接口
    day08-代码块和继承
    day07-变量,封装
    day05-方法、数组
    day04-switch、循环语句
    day03-运算符、键盘录入
    day02-基本概念
  • 原文地址:https://www.cnblogs.com/Jabe/p/9048796.html
Copyright © 2011-2022 走看看