python smtp邮件发送失败怎么办

python smtp邮件发送失败怎么办,第1张

原创:
失败原因可能有如下:1、主机与邮件服务器网络不通;2、邮件发送账号密码未设置或者设置不正确;3、python语法不正确
解决办法:1、主机与邮件服务器网络不通:需要保证主机可以正常访问外网,这样就可以访问到邮件服务器了。2、邮件账号密码未设置或者不正确:首先通过其他浏览器进行邮箱登陆验证,若可以正常登录说明邮箱账号正确,再根据你自己设置的邮箱账号配置文件的格式要求进行修改即可。3、python语法不正确,脚本编写完成之后可以执行如下命令进行语法校验:pyhton -c sendmailpy 这样就可以校验你的sendmailpy脚本的语法是否有问题,若有问题只需要根据提示定位到相应的行进行修正即可。

在进行python写GUI程序的时候,使用Tkinter,发现无法执行程序,报错如下:
X connection to localhost:100 broken(explicit kill or server shutdown)
原因分析:
主要是因为环境变量设置不当导致。
解决方法:
报错的使用的xshell,在这里调用会使用环境变量DISPLAY
报错前的DISPLAY值为:
$ echo $display
localhost:100
进行设置DISPLAY为正确值:
首先查看xshell运行机器的IP地址,在我运行的IP地址为192168111,从而设置DISPLAY如下:
export DISPLAY=192168111:00
再次运行GUI程序,即可正确的显示界面。
python在linux上的GUI无法d出界面的更多相关文章
Nginx+uWSGI+Django+Python在Linux上的部署
搞了一整天,终于以发现自己访问网络的端口是错误的结束了 首先要安装Nginx,uWSGI,Django,Python,这些都可以再网上查到 安装好后可以用 whereis 命令查看是否安装好了各种
python脚本linux上后台执行
1脚本后加& 加了&以后可以使脚本在后台运行,这样的话你就可以继续工作了但是有一个问题就是你关闭终端连接后,脚本会停止运行 python3 runpy >/dev/null
使用 Python 在 Linux 上实现一键回归测试
代码库迁出代码 —- pexpect 的使用 测试人员从代码库(例如 CVS )迁出代码的过程中,需要手动输入访问密码,而 Python 提供了 Pexpect 模块则能够将手动输入密码这一过程自动
利用python监测linux上的服务(简单实现服务宕掉自动发送邮件)
python 这里用到了四个python 模块 : import time (时间模块) import re (正则模块) import socket (监测端口模块)import yagmail (
使用Python获取Linux系统的各种信息
哪个Python版本 当我提及Python,所指的就是CPython 2(准确的是27)我会显式提醒那些相同的代码在CPython 3 (33)上是不工作的,以及提供一份解释不同之处的备选代码
使用 Python 获取 Linux 系统信息
探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数让我们运行Python解释器来探索它们中的一些函数,那就从platformuname()函数开始吧:
转 使用 Python 获取 Linux 系统信息
在本文中,我们将会探索使用Python编程语言工具来检索Linux系统各种信息走你 哪个Python版本 当我提及Python,所指的就是CPython 2(准确的是27)我会显式提醒那些相
在linux上安装python, jupyter, 虚拟环境(virtualenv)以及 虚拟环境管理之virtualenvwraper
一, 安装python31下载python3源码 wget >首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。
本文主要介绍利用'smtplib','email'两个模块来实现邮件的发送,可以如下查看两个模块的函数和方法:
smtplib模块简介:
smtplibSMTP([host[, port[, local_hostname[, timeout]]]])
此为SMTP类构造函数,表示与SMTP服务器之间的连接,并根据这个连接向smtp服务器发送指令,执行相关 *** 作(如:登陆、发送邮件),且每个参数都是可选的。
其中最重要的参数:
host:smtp服务器主机名
port:smtp服务的端口,默认是25;
如果在创建SMTP对象的时候提供了这两个参数,在初始化的时候会自动调用connect方法去连接服务器。
smtplibSMTP还提供了如下方法:
SMTPset_debuglevel(level):设置是否为调试模式
SMTPconnect([host[, port]]):连接到指定的smtp服务器。参数分别表示 smpt主机和端口。
SMTPdocmd(cmd[, argstring]):向smtp服务器发送指令。
SMTPhelo([hostname]) :使用"helo"指令向服务器确认身份。
SMTPlogin(user, password):登陆到smtp服务器。现在几乎所有smtp服务器,都必须在验证用户信息合法之后才允许发送邮件。(重要!)
SMTPsendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):发送邮件。这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。SMTPquit() :断开与smtp服务器的连接,相当于发送"quit"指令。(重要!)
常用的函数方法:
email模块
1class emailmessageMessage
__getitem__,__setitem__实现obj[key]形式的访问。
Msgattach(playload): 向当前Msg添加playload。
Msgset_playload(playload):
Msgadd_header(_name, _value, _params): 添加邮件头字段。
2class emailmimebaseMIMEBase(_maintype, _subtype, _params)
所有MIME类的基类,是emailmessageMessage类的子类。
3class emailmimemultipartMIMEMultipart()
在30版本的email模块 (Python 23-Python 25) 中,这个类位于emailMIMEMultipartMIMEMult ipart。这个类是MIMEBase的直接子类,用来生成包含多个部分的邮件体的MIME对象。
4class emailmimetextMIMEText(_text)
使用字符串_text来生成MIME对象的主体文本。
获得所需要使用的邮箱的host地址和port端口号,(本文使用的是163邮箱,对应的smtp服务器地址:mail163com,端口号25)
常用邮箱的smtp服务器地址和端口号如图:
编写程序如下:
#! /usr/bin/env python
import smtpli
from emailmimetext import MIMEText
mailto_list=['xxxx@xxxcom'] #收件人(列表)
mail_host="smtp163com" #使用的邮箱的smtp服务器地址
mail_user="name" #用户名
mail_pass="pwd" #密码
mail_postfix="postfix" #邮箱的后缀
def send_mail(to_list,sub,content):
me="hello"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";"join(to_list) #将收件人列表以‘;’分隔
try:
server = smtplibSMTP()
serverconnect(mail_host) #连接服务器
serverlogin(mail_user,mail_pass) #登录 *** 作
serversendmail(me, to_list, msgas_string())
serverclose()
return True
except Exception, e:
print str(e)
return False
for i in range(5): #发送五封,不过会被拦截的。。。
if send_mail(mailto_list,"hello","haha!"): #邮件主题和邮件内容
print "done!"
else:
print "failed!"
最后,可以运行编写的py文件,可以得到如图所是的结果,代表邮件发送成功。
这样,就能成功实现用Python发送邮件啦!

我在 csdn 和 cnblog 找到关于 python 发送邮件的例子,代码如下。但在执行时却返回 554 DTSPM 的错误,上网找原因是对方服务器认为是垃圾邮件而拒收了。还有,关于代码中 msg['To']=';'join(to_list) 是什么意思?我该如何理解这行代码?
#!/usr/bin/python
import smtplib
from emailmimetext import MIMEText
mailto_list="xxx@hotmailcom"
mail_host="smtp163com"
mail_user="xxx"
mail_pass="xxx"
mail_postfix="163com"
def send_mail(to_list, sub, content):
me="Ryan Mok"+"<"+mail_user+"@"+mail_postfix+">"
msg=MIMEText(content, _subtype='plain',_charset='gb2312')
msg['Subject']=sub
msg['From']=me
msg['To']=';'join(to_list)
try:
server=smtplibSMTP()
serverconnect(mail_host)
serverlogin(mail_user,mail_pass)
serversendmail(me,to_list,msgas_string())
serverclose()
return True
except Exception, e:
print str(e)
return False
if __name__ == '__main__':
if send_mail(mailto_list,"This is test mail","This is a test email send from python"):
print "Send succeed!\n"
else:
print "Send failed!\n"

这个实现起来非常容易,主要分为2步,首先控制摄像头拍照,然后将拍到的照片作为邮件附件发送就行,下面我简单介绍一下实现过程,实验环境win7+python36+pycharm50,主要内容如下:
控制摄像头拍照
这里我们直接使用opencv的python接口包就行,借助于opencv强大的功能,我们只需要很少量的代码就可以实现摄像头拍照的功能,具体步骤如下:
1首先,安装opencv-python模块,这个直接在cmd窗口输入命令“pip install opencv-python”就行,如下,很快就能安装成功:
2安装完成后,我们就可以编写代码来实现控制摄像头拍照的功能了,测试代码如下,非常简单,打开摄像头,按帧播放,当按下q键时保存并退出,当前目录下就会出现拍到的照片,后面就是将这个照片作为邮件附件进行发送:
发送邮件
这里以发送163邮件为例,主要用到Python自带的smtplib模块,专门用于发送邮件,具体步骤如下:

1首先,需要开启开启邮箱POP3/SMTP服务,这个直接登录邮箱,在上面菜单栏点击“设置”,勾选POP3/SMPT服务就行,如下:
接着点击左边管理列表的“客户端授权密码”,设置授权密码,后面的python代码中需要借助这个密码才能登陆邮箱服务器发送邮件:
2一切设置完成后,我们就可以直接编写代码来发送带有照片的邮件了,测试代码如下,非常简单,只需要在邮件中attach一下照片就行,函数输入参数分别为发送人邮箱、密码、接收人邮件列表、主题、内容和附件名称:
运行这个程序,邮件就可以正常发送,并且可以看到发送的照片附件,如下:
至此,我们就完成了利用python来控制摄像头拍照并发送邮件。总的来说,整个过程不难,思路也比较清晰,只要你有一定的python基础,熟悉一下上面的代码,多调试几遍程序,很快就能掌握的,网上也有相关教程和资料,非常丰富详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12730296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存