这是搜罗网络上的文章总结的一份文档,

参考:

  https://www.jb51.net/article/140604.htm

  https://www.jb51.net/article/140604.htm

一、发送不带附件的邮件

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText # 设置邮件头部显示
message = MIMEText("邮件测试", 'plain', 'utf-8') # 邮件发送正文(随意定义)
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8') # 邮件显示主题(随意定义)
message['From'] = '孔扎根' # 邮件显示发件人(随意定义)
message['To'] = '天心明月' # 邮件显示收件人(随意定义) # 配置服务器及账号信息
sender = 'xx@xxx.cn' # 发件人
receivers = ['xxxx@qq.com'] # 收件人
mail_host = 'smtp.xxxx.cn' # 发送邮件smtp服务器
mail_user = 'xxxx@xxxx.cn' # 登陆邮箱账号
mail_pass = 'xxxxxzzz!' # 登陆邮箱密码 try:
smtpObj = smtplib.SMTP() # 构造smtp实例
smtpObj.connect(mail_host, 25) # 连接smtp服务器
smtpObj.login(mail_user, mail_pass) # 登陆邮箱
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件正文
print("OK")
except:
print("err")

 

二、发送带附件的邮件

  当不设置文件内容时,可以发送普通邮件。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart # 构建MIMEMultipart对象,并在其中添加邮件内容信息
message = MIMEMultipart()
content = MIMEText("邮件测试222222", 'plain', 'utf-8') # 封装邮件内容
message.attach(content) # 添加到实例
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8') # 主题(随意定义)
message['From'] = '孔扎根' # 发件人(随意定义)
message['To'] = '天心明月' # 收件人(随意定义) attr = MIMEText(open('./201812.csv', 'rb').read(),'base64', 'utf-8') # 封装邮件内容
attr['Content-Type'] = 'application/octet-stream'
attr['Content-Disposition'] = 'attachment; filename =' + '201812.csv'
message.attach(attr) # 添加到实例(文件形式) # 配置服务器及账号信息
sender = 'xxxx@xxxx.cn' # 发件人
receivers = ['xxxxxx@qq.com'] # 收件人
mail_host = 'smtp.xxxx.cn' # 发送邮件smtp服务器
mail_user = 'xxxx@xxxx.cn' # 登陆邮箱账号
mail_pass = 'zzzzz' # 登陆邮箱密码 try:
smtpObj = smtplib.SMTP() # 构造smtp实例
smtpObj.connect(mail_host, 25) # 连接smtp服务器
smtpObj.login(mail_user, mail_pass) # 登陆邮箱
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件正文
print("OK")
except:
print("err")

  

三、模板类

  有些函数没有写出,只是个简单例子

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
发送邮件:
1、fm=None 发送普通邮件
2、fm 非空 发送带附件的邮件
"""
import smtplib
import datetime
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from lion import Base
from logCl import log
logger = log("邮箱登陆") class SendMyEmail(Base):
def __init__(self):
Base.__init__(self)
self.sec = self.SectionEmail() def loginEmail(self):
# 登陆邮箱
try:
smtpObj = smtplib.SMTP() # 创建实例
smtpObj.connect(self.sec['host'], 25) # 连接smtp
smtpObj.login(self.sec['user'],
self.sec['password']) # 通过smtp登陆邮箱
logger.info("Login Succ %s" % datetime.datetime.now())
return smtpObj
except:
logger.error("Login Err %s" % datetime.datetime.now())
return "err" def sendMsg(self, Subject, From, To, msg, fm=None):
"""
:param Subject: 邮件主题
:param From: 显示发件人名称
:param To: 显示收件人名称
:param msg: 发送正文内容
:param fm: 发送的附件
"""
# 发送邮件
ret = self.loginEmail()
if ret != 'err':
try:
# 设置邮件头部
message = MIMEMultipart() # 可在此对象中添加 邮件内容和附件内容
message.attach(MIMEText(msg, 'plain', 'utf-8')) # 添加邮件内容
message['Subject'] = Header(Subject, 'utf-8') # 设置邮件主题
message['From'] = From # 设置发件人名称
message['To'] = To # 设置收件人名称
# 构造附件
if fm:
attr = MIMEText(open(fm, 'rb').read(), 'base64', 'utf-8') # 包装附件内容
attr['Content-Type'] = 'application/octet-stream' # 设置Content-Type属性
attr['Content-Disposition'] = 'attachment; filename =' + fm # 设置附件名称
message.attach(attr) # 添加邮件内容(文件)
# 发送邮件
ret.sendmail(self.sec['sender'],
self.sec['receiver'].split(","),
message.as_string())
logger.info("Send Msg OK %s" % datetime.datetime.now())
except:
logger.info("Send Msg Err %s" % datetime.datetime.now())
else:
raise Exception("Error user or password, Pleas Check config!!")

  

python3 邮件发送的更多相关文章

  1. 【python3】基于 qq邮箱的邮件发送

    脚本内容: #!/usr/bin/python3 # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText ...

  2. python3 通过邮件发送测试报告

    通过之前的学习,了解到了如何利用excel进行读取数据,如何采用DDT数据驱动,如何使用unittest.下面是将之前所学进行结合,并发送邮件-->leader,废话不多说,上代码: email ...

  3. 3.13 练习题4:邮件发送(smtp)

    3.13 练习题4:邮件发送(smtp) 前言本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了.以下代 ...

  4. 【Python + Selenium3】自动化测试之DDT数据驱动并生成测试报告以及用yagmail邮件发送文件

    我的文件路径 一.DDT代码: import unittest from time import sleep from selenium import webdriver from ddt impor ...

  5. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  6. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  7. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  8. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  9. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

随机推荐

  1. jsp和servlet的关系

    JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...

  2. Python函数学习——作用域与嵌套函数

    全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...

  3. MongoDB索引管理-索引的创建、查看、删除

    索引是提高查询查询效率最有效的手段.索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中, ...

  4. 正则表达式matcher.group用法

    group是针对括号()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西. 上代码: @Test public void te ...

  5. oracle使用connect by进行级联查询 树型菜单

    Oracle使用connect by进行级联查询 树型菜单(转) connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点. 来看一个示例,现假设我们拥 ...

  6. BBWebImage 设计思路

    BBWebImage 设计思路 BBWebImage 是高性能 Swift 图片组件,用于图片下载.缓存.编解码.编辑与展示. GitHub 地址: https://github.com/Silenc ...

  7. CentOS安装Subversion 1.9.*版本客户端

    安装yum仓库 以下以CentOS6为例,其他类似 # vim /etc/yum.repos.d/wandisco-svn.rep [WandiscoSVN] name=Wandisco SVN Re ...

  8. 一个小时学会PHP

    一.PHP概要 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广 ...

  9. easyui的datagrid为何无法显示json数据

    因为easyui的datagrid要求数据JSON必须是如下格式:{"total":0,"rows":[]}其中total表示总的数据行数,rows是当前页的数 ...

  10. ILSpy

    今日为找泛型序列的一个Select方法源码,就去找了个ILSpy反编译工具. 工具下载地址:http://www.fishlee.net/service/softarchive/57,一般选择较新的. ...