python自动发邮件运行正常就是收不到邮件是为什么_python stmp module 163邮箱发送邮件不成功...

开发环境:

系统:Ubuntu 16.04 LTS

版本:python 3.5.2

邮箱服务器:stmp.126.com

注意:

1.不可正文群发带图,不然会被stmp.126.com认定为垃圾邮件,发不出去 - -!!! 也就是说该代码群发的话,只能用plain纯文本模式.

2.由于我的邮箱服务器是126的,所以建议也使用126邮箱测试,测试的前提是你需要开通客户端授权,开通后会让你设置密码,那个密码要记好,下面的passwd接收的是授权密码而不是邮箱密码!

3.代码中需要改的地方的地方: 发件人/授权密码/收件人/附件中图片的路径,以及下面的图片格式

若不需要发附件,把with:代码块隐藏即可

下面直接贴代码部分了,我自己已经测试过代码了,在以上环境运行没有问题,群发,单发,附件,邮件正文带图等等.

#!/usr/bin/python3

# coding:utf-8

#=========================================================================

# 加密SMTP

#

# 使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。

#=========================================================================

from email import encoders

from email.header import Header

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr, formatdate

import smtplib

# return Alias_name

def _format_addr(s):

name, addr = parseaddr(s)

return formataddr((Header(name, 'utf-8').encode(), addr))

# 接收参数: 发件人地址

from_addr = '你的邮箱地址'

# 接收参数: 客户端授权密码

passwd = '你的客户端授权密码'

# 接收参数: 收件人地址,可多个

to_addrs = ['ex@qq.com', 'ex@163.com', 'ex@gmail.com']

# 接收参数: SMTP服务器(注意:是发件人的smtp服务器)

smtp_server = 'smtp.126.com'

# 接收参数: 邮件主题

subject = '人生苦短'

# 接收参数: 邮件正文

plain = '我用python!'

# 带附件邮件

# 指定subtype为alternative,同时支持html和plain格式

msg = MIMEMultipart('alternative')

# 邮件正文中显示图片,同时附件的图片将不再显示

# plain = 'Hello world and hello me!'

msg.attach(MIMEText(str(plain), 'plain', 'utf-8')) # 纯文本

# html = '

Hello

'

# msg.attach(MIMEText(html, 'html', 'utf-8')) # HTML

# 添加附件:即关联一个MIMEBase,图片为本地读取

with open('/home/uxeix/Pictures/icon/favicon (Jianshu).ico', 'rb') as f:

# 设置附件中的MIME和文件名

mime = MIMEBase('image', 'jpeg', filename='hot.jpg')

# 加上必要的头信息

mime.add_header('Content-Disposition', 'attachment',

filename='hot.jpg')

mime.add_header('Content-ID', '<0>')

mime.add_header('X-Attachment-Id', '0')

# 把附件的内容读进来

mime.set_payload(f.read())

# 用Base64编码

encoders.encode_base64(mime)

# 添加到MIMEMultipart

msg.attach(mime)

# 未指定用户别名,则客户端会自动提取邮件地址中的名称作为邮件的用户别名

msg['From'] = _format_addr(from_addr)

# msg['To'] = _format_addr(to_addrs)

msg['To'] = '%s' % ','.join([_format_addr('' % to_addr)

for to_addr in to_addrs])

msg['Subject'] = Header(str(subject), 'utf-8').encode()

msg['Date'] = formatdate()

#=========================================================================

# 发送邮件

#=========================================================================

try:

# SMTP服务器设置(地址,端口):

server = smtplib.SMTP_SSL(smtp_server, 465)

# server.set_debuglevel(1)

# 连接SMTP服务器(发件人地址, 客户端授权密码)

server.login(from_addr, passwd)

# 发送邮件

server.sendmail(from_addr, to_addrs, msg.as_string())

print('邮件发送成功')

except smtplib.SMTPException as e:

print(e)

print('邮件发送失败')

finally:

# 退出SMTP服务器

server.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库导入导出_MySQL数据库导入导出详解

MySQL数据库的导入&#xff0c;有两种方法&#xff1a;1) 先导出数据库SQL脚本&#xff0c;再导入&#xff1b;2) 直接拷贝数据库目录和文件。在不同操作系统或MySQL版本情况1. 概述MySQL数据库的导入&#xff0c;有两种方法&#xff1a;1) 先导出数据库SQL脚本&#xff0c;再导…

python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解

python列表切片和嵌套列表取值操作详解给出列表切片的格式&#xff1a;[开头元素::步长] # 输出直到最后一个元素,(最后一个冒号和步长可以省略&#xff0c;下同)[开头元素:结尾元素(不含):步长]# 其中&#xff0c;-1表示list最后一个元素首先来看最简单的单一列表&#xff1a;…

python 装饰器有哪些_Python装饰器有哪些常见用途?

RSabet..123我使用装饰器主要用于计时目的def time_dec(func):def wrapper(*arg):t time.clock()res func(*arg)print func.func_name, time.clock()-treturn resreturn wrappertime_decdef myFunction(n):...好例子!不知道它做了什么.解释你在那里做什么,以及装饰者如何解决…

代码统计工具有哪几种_跟我学“Linux”小程序Web版开发(四):引入统计及Crash收集...

在完成了产品的基础开发以后&#xff0c;接下来需要进行一些周边的工作&#xff0c;这些周边工具将会帮助下一步优化产品。在完成了产品的基础开发以后&#xff0c;接下来需要进行一些周边的工作&#xff0c;这些周边工具将会帮助下一步优化产品。为什么要加应用统计和 Crash 收…

mmseg java_MMSeg中文分词算法

Java中有一些开源的分词项目&#xff0c;比如&#xff1a;IK、Paoding、MMSEG4J等等。这里主要说的是MMSEG4J中使用的MMSeg算法。它的原文介绍在&#xff1a;http://technology.chtsai.org/mmseg/&#xff0c;是用英文书写的&#xff0c;这是只是它的一个中文笔记。为什么中文要…

python查看文档的软件_Python __doc__属性:查看文档

前面介绍了使用 help() 函数来查看程序单元的帮助信息。比如导入 string 模块之后&#xff0c;即可使用 help() 函数来查看指定程序单元的帮助信息。例如&#xff0c;在交互式解释器中输入如下命令来查看 string 模块下 capwords() 函数的作用&#xff1a;>>> help(st…

python重写和装饰器_python中的装饰器

装饰器的本质&#xff1a;当你在用某个decorator来修饰某个函数func时&#xff0c;如下所示&#xff1a;decoratordef func():pass其解释器会解释成下面这样的语句&#xff1a;funcdecorator(func)本质是把一个函数当作参数传递到另一个函数中&#xff0c;然后再调用。def hell…

python3不等于号_python中的不等于号是什么

python中的不等于号用!表示。Python支持的比较运算符如下图所示比较运算符&#xff0c;也成关系运算符&#xff0c;用于对常量、变量或表达式的结果进行大小、真假等比较&#xff0c;如果比较结果为真&#xff0c;则返回 True&#xff1b;反之&#xff0c;则返回 False。比较运…

java的abstract的意思_java – spring中的abstract =“true”是什么意思?

Spring中的抽象bean有点不同于抽象类。事实上&#xff0c;Spring中的抽象bean甚至不需要映射到任何类。以此为例&#xff1a;和类&#xff1a;public class FooDao {private DataSource dataSource;private SomeHelper someHelper;private FooHelper fooHelper;//setters}publi…

错误:不能继续进行下一步操作 openfire 设置._如何为MacBook或Mac电脑恢复出厂设置...

mac电脑经过长时间的使用后会变得卡顿&#xff0c;或者因为部分操作方式改变以至于给我们在使用过程中造成障碍&#xff0c;此时我们可以进行恢复出厂设置&#xff0c;以此来解决部分问题。那么该如何为MacBook或Mac电脑恢复出厂设置呢&#xff1f;下面跟随小编来一起学习一下吧…

java枚举类型测试_Java枚举类的使用

1、自定义枚举类// 测试类public class enumDemo {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);}}// 自定义枚举类class Season {//…

mac显示网速_Mac网络流量监控工具——NetWorker pro

NetWorker pro for Mac是Mac系统上一款轻量级的网速实时监测软件&#xff0c;可以让用户在菜单栏上显示当前的网络上传下载速度&#xff0c;可以在速度和流量两种模式之间切换&#xff0c;也可以选择不同的网络模式来进行监测。此外&#xff0c;networker mac还提供有关当前活动…

南京java架构师工资_java架构师工资一般是多少?怎么提升才能获得高薪?

这几年Java一直以自身的优势霸占榜首&#xff0c;而且其实java架构师工资也是行业比较高的&#xff0c;下面来看看java架构师的工资到底有多少&#xff0c;当然这也是要区分地区的&#xff0c;以及怎样提高自己才能获得高薪呢&#xff1f;当程序员容易&#xff0c;当一个优秀的…

matlab gui学习手记_MATLAB论坛不可错过的30例GUI源代码

​过去的两年中&#xff0c;我经常会在微信公众号和知乎上分享&#xff0c;平时如何通过MATLAB制作GUI&#xff0c;来让自己的工作和生活更加便捷与高效。在分享的同时&#xff0c;有不少朋友会给我留言提问关于MATLAB GUI的问题。而其中的许多问题&#xff0c;其实都是能够在M…

线性回归csv数据集_用mxnet的gluon线性回归训练只有两个特征的数据集

前言自从上次试着用最基础的线性回归训练一个有80个特征的数据集&#xff0c;梯度爆炸之后&#xff0c;今天拿一个简单到不能再简单的数据集试试能不能成功收敛。途中我们又会遇到什么问题&#xff1f;数据集来自吴恩达机器学习课程第二周的课后练习。原本是txt文件&#xff0c…

java中include标签的用法_原 ng-include用法分析以及多标签页面的简单实现方式

在平时的项目开发中&#xff0c;应该会经常遇到上图所示的需求&#xff0c;就是在一个页面中有多个标签&#xff0c;被选中的标签颜色会高亮显示&#xff0c;切换不同标签显示相应的不同内容。如果内容代码过多则写在同一个html文件就会显得特别乱&#xff0c;所以这里我们最好…

Java中如何引用文档对象模型_在JAVA中使用文档对象模型DOM经验小结

文档对象模型 (DOM) 是一个文档标准&#xff0c;对于完备的文档和复杂的应用程序&#xff0c;DOM 提供了大量灵活性。DOM标准是标准的。它很强壮且完整&#xff0c;并且有许多实现。这是许多大型安装的决定因素--特别是对产品应用程序&#xff0c;以避免在API发生改变时进行大量…

禅道项目管理_禅道 11.6.1 版本发布,完善细节,修复 Bug

禅道项目管理软件集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体&#xff0c;是一款功能完备的项目管理软件&#xff0c;完美地覆盖了项目管理的核心流程。禅道官网&#xff1a;www.zentao.net。大家好&#xff0c;禅道项目管理软件11.6.1发布&#xff0…

mendeley引用参考文献不显示_免费文献管理器Mendeley

June 2020有机合成化学文献检索今天小编给大家分享一款免费又好用的文献管理器——Mendeley&#xff0c;另外晶体cif文件下载—Materialsproject和COD数据库可在菜单栏的文献检索[文献管理/资源]中查看Mendeley是什么Mendeley是一款免费的跨平台文献管理软件&#xff0c;同时也…

pgsql vs mysql查询_对比平台--SQL Server Vs PostgreSQL

Microsoft SQL Server是一个数据库管理和分析系统&#xff0c;主要用于电子商务&#xff0c;业务范围和不同的数据仓库解决方案。另一方面&#xff0c;PostgreSQL是高级的对象关系数据库管理系统&#xff0c;它为SQL标准的扩展子集提供支持&#xff0c;包括不同的事务&#xff…