python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报相关的知识,希望对你有一定的参考价值。
我的code:
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
#python 2.3.*: email.Utils email.Encoders
from email.utils import COMMASPACE,formatdate
from email import encoders
import os
#server['name'], server['user'], server['passwd']
class MyEmail:
def __init__(self,server, fro, to, subject, text, files=[]):
self.serv = server
self.send_from = fro
self.send_to = to
self.sbj_content = subject
self.text_content = text
self.add_files = files
pass
def SendMail(self):
server = self.serv
msg = MIMEMultipart()
msg['From'] = self.send_from
msg['Subject'] = self.sbj_content
msg['To'] = COMMASPACE.join(self.send_to) #COMMASPACE==', '
msg['Date'] = formatdate(localtime=True)
msg.attach(MIMEText(self.text_content))
for file in self.add_files:
part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data
part.set_payload(open(file, 'rb').read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
msg.attach(part)
import smtplib
smtp = smtplib.SMTP(server['name'])
smtp.login(server['user'], server['passwd'])
smtp.sendmail(self.send_from, self.send_to, msg.as_string())
smtp.close()
def RecvMail(self):
pass
一样的code,在家能发在公司就不能
我现在怀疑是公司的PATh有问题,请问如何定位这样的问题啊,我很水
可能真的是网络问题。你家里的是ADSL,在公司可能还需要过一个代理以及企业的防火墙。所以有些东西可能是被屏蔽了。
通常你可以用telnet :25, 或者是telnet :110,
如果返回连接成功后,你按ESCAPE,再打几个回车有回应,应该就是网络没有问题。
但是手动发邮件可以 搞不懂 我这个脚本也没有指定什么端口啊
追答用命令行连接下smtp服务器试试。 如果通过就再检查下pytthon程序的邮件配置内容
追问如何用命令链接smtp服务器求解?
追答百度下 "cmd smtp"
如何遍历整个python脚本,并且每次更改订单都会运行
我正在尝试创建一个在Linux系统后台运行的脚本。我希望它检查是否满足某些条件;一旦他们有,跳过该部分代码,不再检查。
Loop = True
while True:
V1 = None
while True:
print("Checked for vulnerability")
if my_file.is_file():
print('Virus is still there')
time.sleep(6)
os.system("rm /home/levi/Desktop/Trojan")
else:
print('Virus removed')
V1 = False
break
print('Did this work')
我需要检查V1:if True
,然后执行循环。当它循环时,将值设置为False
并结束脚本 - 但它会卡在else语句中并且永远不会结束。我从未见过“做过这件事”。
你已经把自己绑成了一个双无限循环的结。你设置了两个变量(Loop和V1,两个都是不好的名字),从不使用任何一个来控制循环。试试这个:当你完成时,只需要break
循环。
while True:
print("Checked for vulnerability")
if my_file.is_file():
print('Virus is still there')
time.sleep(6)
os.system("rm /home/levi/Desktop/Trojan")
else:
print('Virus removed')
break
print('Did this work')
你有两个无限循环,只能用break
语句结束。你的代码中有一个break
语句,但只有一个。 break
语句只会突破它所处的最内部循环,在这种情况下,你的内部while
循环。因此外部while
循环永远不会结束。虽然有更好的编写代码的方法(如Prune指出的那样),但我会给出一个与原始代码紧密相关的建议:
V1 = True
while V1 is True:
print("Checked for vulnerability")
if my_file.is_file():
print('Virus is still there')
time.sleep(6)
os.system("rm /home/levi/Desktop/Trojan")
else:
print('Virus removed')
V1 = False
print('Did this work')
我仍然删除了外部的while
循环,因为它没有任何目的。当然,除非您要向外循环添加更多内容而不仅仅是其他循环,否则您应该重新添加它。但是,在这种情况下,您应该按以下方式定义代码:
loop = True
V1 = True
while loop is True:
while V1 is True:
print("Checked for vulnerability")
if my_file.is_file():
print('Virus is still there')
time.sleep(6)
os.system("rm /home/levi/Desktop/Trojan")
else:
print('Virus removed')
V1 = False
# do something else here after ending the inner while loop
print('Did this work')
这确保了内部while
循环只执行一次,无论外循环迭代多少次。
以上是关于python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报的主要内容,如果未能解决你的问题,请参考以下文章
hbase连接java时,zookeeper总是连接不上,但是确实已经启动,每次连接,都报错
为啥安装不了JAVAsetup8u241,每次都报这个错误,求解答。