Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从本地主机(不登录STMP服务器)用Python发送电子邮件时,如何解决套接字错误?_Python_Email_Smtp - Fatal编程技术网

从本地主机(不登录STMP服务器)用Python发送电子邮件时,如何解决套接字错误?

从本地主机(不登录STMP服务器)用Python发送电子邮件时,如何解决套接字错误?,python,email,smtp,Python,Email,Smtp,我正在编写一个小的电子邮件脚本,供一群信任的人使用。在其中一个人运行的长时间作业完成后,此脚本可以运行并发送一封简单的电子邮件,其中包含作业结果的详细信息。我不希望脚本尝试登录到STMP服务器上的现有电子邮件帐户,我希望仅从运行脚本的计算机发送电子邮件 当我尝试使用localhost运行时,遇到一个套接字错误: Traceback (most recent call last): File "./1_email.py", line 45, in <module> main

我正在编写一个小的电子邮件脚本,供一群信任的人使用。在其中一个人运行的长时间作业完成后,此脚本可以运行并发送一封简单的电子邮件,其中包含作业结果的详细信息。我不希望脚本尝试登录到STMP服务器上的现有电子邮件帐户,我希望仅从运行脚本的计算机发送电子邮件

当我尝试使用
localhost
运行时,遇到一个套接字错误:

Traceback (most recent call last):
  File "./1_email.py", line 45, in <module>
    main()
  File "./1_email.py", line 34, in main
    server = smtplib.SMTP("localhost")
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 575, in create_connection
    raise err
socket.error: [Errno 111] Connection refused
回溯(最近一次呼叫最后一次):
文件“/1_email.py”,第45行,在
main()
文件“/1_email.py”,第34行,主
server=smtplib.SMTP(“本地主机”)
文件“/usr/lib/python2.7/smtplib.py”,第256行,在__
(代码,消息)=自连接(主机,端口)
文件“/usr/lib/python2.7/smtplib.py”,第316行,在connect中
self.sock=self.\u获取\u套接字(主机、端口、self.timeout)
文件“/usr/lib/python2.7/smtplib.py”,第291行,在get套接字中
返回套接字。创建_连接((主机、端口),超时)
文件“/usr/lib/python2.7/socket.py”,第575行,在create_connection中
提出错误
socket.error:[Errno 111]连接被拒绝
我做错了什么

#!/usr/bin/env python

import smtplib

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

def main():

    message = MIMEMultipart("alternative")
    message["Subject"] = "test"
    message["From"]    = "monitor@localhost"
    message["To"]      = "test@sern.ch"

    text = "hello world"
    html = """\
    <html>
    <head></head>
    <body>
    <p>
    hello world
    </p>
    </body>
    </html>
    """

    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")

    message.attach(part1)
    message.attach(part2)

    try:
        server = smtplib.SMTP("localhost")
        server.sendmail(
            message["From"],
            message["To"],
            message.as_string()
        )
        server.quit()
    except smtplib.SMTPException:
       print("e-mail send error")

if __name__ == "__main__":
    main()
#/usr/bin/env python
导入smtplib
从email.mime.multipart导入MIMEMultipart
从email.mime.text导入MIMEText
def main():
消息=MIMEMultipart(“备选方案”)
消息[“主题”]=“测试”
消息[“来自”]=“monitor@localhost"
消息[“至”]=“test@sern.ch"
text=“你好,世界”
html=”“”\

你好,世界

""" 第1部分=MIMEText(文本,“纯”) part2=MIMEText(html,“html”) 附文(第一部分) 附文(第二部分) 尝试: server=smtplib.SMTP(“本地主机”) server.sendmail( 消息[“来自”], 信息[“至”], message.as_string() ) server.quit() 除了smtplib.SMTPException: 打印(“电子邮件发送错误”) 如果名称=“\uuuuu main\uuuuuuuu”: main()
是否有smtp守护进程在本地主机的端口25上运行?@Oli嘿,谢谢你的评论。当我运行
telnet localhost 25
时,我会收到一条消息,其中包括
lxplus0059.sern.ch ESMTP Sendmail 8.14.4/8.14.4;Fri,2016年3月11日16:52:51+0100
,因此我认为它正在运行一个可通过该端口访问的端口。嗯,现在没有观察到套接字错误。脚本现在似乎正在运行(尽管我没有收到任何来自它的电子邮件)。。。。现在我收到了它的电子邮件。这是SMTP服务器的暂时问题。