python 2.7 利用smtplib发送、抄送邮件以及发送html表格

开发语言: python2.7
包:smtplib

导入包:

import smtplib

定义一个函数:

def send_mail(to_list, cc_list, html, sub):
    me = mail_user
    msg = MIMEText(html, _subtype=‘html‘, _charset=‘utf-8‘)  # 格式化邮件内容为html,编码为utf-8
    msg[‘Subject‘] = sub    # 邮件主题
    msg[‘From‘] = me    # 发件人
    msg[‘To‘] = ";".join(to_list)  # 收件人,将列表转换为字符串
    msg[‘Cc‘] = ";".join(cc_list)  # 抄送人,将列表转换为字符串
    try:
        send_smtp = smtplib.SMTP()    # 实例化
        send_smtp.connect(mail_host)    # 连接smtp服务器
        send_smtp.login(mail_user, mail_pass)    # 使用定义的账号密码进行登录
        send_smtp.sendmail(me, to_list+cc_list, msg.as_string())    # 发送邮件
        send_smtp.close()    # 关闭连接
        return True
    except Exception, e:
        # logging.debug(e)
        print e
        return False

其中:“to_list”为收件人列表(可以为一个或者多个),“cc_list”为抄送列表(同样为一个或多个),“html”为邮件内容,可以发送html格式的邮件,“sub”为邮件主题。

调用发送邮件函数:

if __name__ == ‘__main__‘:
    mail_host = ‘[email protected]‘
    mail_user = ‘[email protected]‘
    mail_pass = ‘password‘
    mailto_list = [‘[email protected]‘, ‘[email protected]‘, ‘[email protected]‘]
    mailcc_list = [‘[email protected]‘]
    html = "<h1> test page</h1>"
    sub = "send mail test"
    if send_mail(mailto_list, mailcc_list, strhtml, sub):
        logging.debug("Send mail succed!")
    else:
        logging.debug("Send mail failed")

在搜索资料过程中,发现很多人说抄送功能无法实现,可能是因为列表和字符串之间的转换问题,或者是由于send_smtp.sendmail()函数的格式问题,虽然没有报错,但是没有发送成功。

建议大家在使用时,如果没有发送成功或者是抄送成功,可以在

to_list,cc_list,msg[‘To‘],msg[‘Cc‘]

这里加上print,看一下类型和是否正确;

附smtplib源码地址:

https://hg.python.org/cpython/file/2.7/Lib/smtplib.py
时间: 2024-12-28 06:14:57

python 2.7 利用smtplib发送、抄送邮件以及发送html表格的相关文章

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from HTMLTestRunner import HTMLTestRunner from email.header import Header import unittest import time,os #==========

使用python中的smtplib库,写一个简单的发送qq邮件程序,速成!!

#-*-coding:utf-8-*- import smtplib from  smtplib import SMTP_SSL from email.mime.text import MIMEText from email.header import Header #定义一个字典存储发送和接收,邮箱账号密码主题.内容及编码相关信息 mail_info = {     "from": "[email protected]",  #发件人     "to&q

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

python学习笔记[3]-邮件的发送

本文摘抄自:http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执行

python实现邮件的发送

今天尝试实现了利用python,编写程序来发送邮件,以下为实现过程: 一:关于邮件传输的简介 SMTP (Simple Mail Transfer Protocol) 邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用来接收邮件.大多数的邮件发送服务器 (Outgoing Mail Server) 都是使用SMTP协议.SMTP协议的默认TCP端口号是25. SMTP协议的一个重要特点是它能够

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发送各类邮件的主要方法

python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点.     一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执

使用python发送QQ邮件

这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”.使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去. MIMEText 对象 msg 包括收发邮箱地址.邮件正文和主题,Python 通过它就可以创建一封格式正

Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_url = "http://xxxxx.com" undirect_username = "username" undirect_password = "password" direct_username = "username"