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

参考:

  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. setting-mirrorO以及下载jar包流程简介

    mirrorOf常见的几种配置如下 1.* 2.repo3 3.repo1,repo2,*,!repo3 4.external:* 第二个例子只配置了一个repo3,这个镜像只能匹配id是repo3的 ...

  2. 2-3 用组件改写Todolist案例

     编写组件来改写2-2的Todolist案例

  3. 【PaddlePaddle】自然语言处理:句词预测

    前言 预测词汇的相关性算是自然语言中的HelloWolrd.本文主要根据百度PaddlePaddle示例word2vec,对句子中下一个单词的预测.该示例使用4个词语来预测下一个词. 1. 数据集以及 ...

  4. linux中一些简便的命令之cut

    提中的这些命令都是些小命令,很简便,在工作过程中经常使用,具体使用方法如下: cut 使用说明:一般是把某个整齐的文档输出其中某列使用 常用的参数有: -f 选择打印的列 -d 指定定界符(默认定界符 ...

  5. keras中的mini-batch gradient descent (转)

    深度学习的优化算法,说白了就是梯度下降.每次的参数更新有两种方式. 一. 第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种方法每更新一次参数都要把数据集里的所有样本都看 ...

  6. springmvc的异步处理

         关于异步的好处我在这里就不多说了,自从servlet3.1规范发布以来,控制层的异步处理也越来越多的被人提及.而Spring5的webflux诞生也意味着Spring全方位对异步提供了支持. ...

  7. 详解C#异常处理

    一.程序运行时产生的错误通过使用一种称为异常(Exception)的机制在程序中传递,通过异常处理(Exception Handling)有助于处理程序运行过程中发生的意外或异常情况:异常可由CLR和 ...

  8. Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)

    Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...

  9. 杜绝假死,Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)

    为了确保服务不会被过多的http长连接压垮,我们需要对tomcat设定个最大连接数,超过这个连接数的请求会拒绝,让其负载到其它机器.达到保护自己的同时起到连接数负载均衡的作用. 一.解决方案:修改to ...

  10. Debug EOS:nodeos + mongo_db_plugin

    上文书说到区块链的存储方式,并结合了EOSIO进行分析,其中也提到了使用CLion调试EOS的方法.本文将继续深入细致地展开对加载了mongo_db_plugin的nodeos的调试过程以及心得. 关 ...