【问题标题】:Repl.it SMTPLIB OSError: [Errno 99] Cannot assign requested addressRepl.it SMTPLIB OSError: [Errno 99] 无法分配请求的地址
【发布时间】:2021-05-26 19:00:45
【问题描述】:

我正在尝试在 repl.it 上运行简单的 emailsender.py 脚本来发送电子邮件。 当我尝试在台式机上运行它时,它没有任何问题,但在 repl.it 上我收到一条错误消息OSError: [Errno 99] Cannot assign requested address,详情如下。 emailsender.py 程序如下所示:

import smtplib

def send_email(username: str, key: str):
    reciever = username+"@theirmail.cz"
    sender = "my_email@email.cz"
    topic = "Autothorization bot"
    
    # header
    msg = "From: %s\r\nSubject: %s\r\nTo: %s\r\n\r\n" % (sender, topic, reciever)

    # add message content
    content = "Your key is: " + key
    msg += content

    server = smtplib.SMTP('smtp.seznam.cz')
    server.login('my_email@email.cz', "my_email_password") 
    server.sendmail(sender, reciever, msg)
    server.quit()

当我尝试在 repl.it 上通过 python 运行脚本时,一段时间后我收到此错误消息:

>>> import emailsender
>>> emailsender.send_email("username", "test_message")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/runner/botpy/emailsender.py", line 24, in send_email
    server = smtplib.SMTP('smtp.seznam.cz')
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 337, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.8/smtplib.py", line 308, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "/usr/lib/python3.8/socket.py", line 808, in create_connection
    raise err
  File "/usr/lib/python3.8/socket.py", line 796, in create_connection
    sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address

这个 .py 脚本是我试图在 repl.it 上托管的一个更大的 discord.py 机器人,但这应该不会产生任何影响,因为这个脚本单独在台式电脑上运行良好。

我已尽力找出导致此错误的原因,但到目前为止没有成功。

【问题讨论】:

    标签: python email smtp smtplib repl.it


    【解决方案1】:

    由于我不知道的原因,一个小的命令配置修复了它。

    用于发送电子邮件的脚本的新部分如下所示:

    server = smtplib.SMTP('smtp.seznam.cz', 587)
    server.starttls()
    server.ehlo()
    server.login('my_email@email.cz', "my_email_password") 
    server.sendmail(sender, reciever, msg) 
    server.quit()
    

    【讨论】:

    • 端口对我来说很关键!
    【解决方案2】:

    我有同样的错误,并且 port=587 解决了这个问题

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2018-04-27
      • 2020-09-04
      • 1970-01-01
      • 2017-09-13
      • 2020-06-06
      • 2017-05-08
      • 2018-01-02
      • 2022-11-09
      相关资源
      最近更新 更多