0

我正在尝试使用 Python 发送电子邮件,并使用了在官方网站 ( https://docs.python.org/3/library/email.examples.html ) 上找到的材料,但是当我收到错误消息时发送电子邮件。当我使用 Java 时,使用端口和服务器可以工作,但在 Python 中使用相同的细节时,代码不起作用。

我正在测试的代码:

import smtplib
from email.message import EmailMessage

port = 25
server = "172.xxx.xxx.xxx"

from_add = "test@fakemail.com"
to_add = "test@fakemail.com"

message = "This is a test Email"
subject = "Test Email"

msg = EmailMessage()
msg.set_content(message)
msg["Subject"] = subject
msg["From"] = from_add
msg["To"] = to_add

#Send the message via our own SMTP server
s = smtplib.SMTP(server)
s.send_message(msg)
s.quit()

当我运行我的代码时,出现以下错误。我一直在网上搜索,我发现的只是有关套接字的错误(我尝试添加在任何示例中都没有看到的错误。我的防火墙管理员告诉我他没有看到任何流量被阻止。有谁知道我在编码什么是错的?

原来的

Traceback (most recent call last):
  File "X:/test/test_email.py", line 21, in <module>
    s = smtplib.SMTP(server)
  File "X:\Enviroments_For_Python\PROD\lib\smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "X:\Enviroments_For_Python\PROD\lib\smtplib.py", line 336, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "X:\Enviroments_For_Python\PROD\lib\smtplib.py", line 307, in _get_socket
    self.source_address)
  File "X:\Enviroments_For_Python\PROD\lib\socket.py", line 728, in create_connection
    raise err
  File "X:\Enviroments_For_Python\PROD\lib\socket.py", line 711, in create_connection
    sock = socket(af, socktype, proto)
  File "X:\Enviroments_For_Python\PROD\lib\socket.py", line 151, in __init__
    _socket.socket.__init__(self, family, type, proto, fileno)
OSError: [WinError 10022] An invalid argument was supplied

Process finished with exit code 1

套接字更改(无效)

s.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sock.bind(server, port)
4

1 回答 1

0

我发现了问题。我正在使用 Anaconda 并创建了一个不同的环境。当我切换到根环境时,我的代码可以正常工作。

于 2020-06-12T12:27:09.937 回答