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

参考:

  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. js中数字直接点方法会报错,如1.toString()

    Number(11).toString() "11" var num = 111; undefined num.toString() "111" .toStri ...

  2. Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师

    一.分布式架构体系 分布式怎么来的.传统的电信.银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正也不缺钱,IBM小型机,大型机,采购了堆 ...

  3. Java内部类持有外部类的引用详细分析与解决方案

    在Java中内部类的定义与使用一般为成员内部类与匿名内部类,他们的对象都会隐式持有外部类对象的引用,影响外部类对象的回收. GC只会回收没有被引用或者根集不可到达的对象(取决于GC算法),内部类在生命 ...

  4. 批量去除文件的BOM头

    <?php class KillBom{ //定义扩展名 public static $m_ext = ['txt','php','js','css']; /** * 传入一个任意文件,自动区分 ...

  5. android 代码混淆示例

    参考其它资料为项目代码做了一下混淆 项目中使用了 slidingmenu   actionbarsherlock   fastjson  volley   httpclient 等第三方库, 并使用了 ...

  6. 理解 React Hooks

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由志航发表于云+社区专栏 TL;DR 一句话总结 React Hooks 就是在 react 函数组件中,也可以使用类组件(classe ...

  7. PHP序列化变量的4种方法

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1.  serialize ...

  8. JS判断是否是数组的四种做法

    一.前言 如何判断一个对象或一个值是否是一个数组,在面试或工作中我们常常会遇到这个问题,既然出现频率高,想着还是做个整理,那么本文主要基于几种判断方式,以及方式判断的原理,是否存在问题展开讨论. 二. ...

  9. CentOS 7 开启 SNMP 实现服务器性能监控

    1.检测是否有 SNMP 服务 service snmpd status 2.若没有则安装 yum install -y net-snmp 3.编辑 SNMP 的配置文件,设置安全的验证方式 vi / ...

  10. XtraBackup的备份原理与应用示例

    一.XtraBackup简介与安装 XtraBackup是一款免费的在线开源数据库备份解决方案,适用于所有版本的MySQL和MariaDB.XtraBackup支持对InnoDB热备,是一款物理备份工 ...