通过 python 从一个 Outlook 帐户向另一个帐户发送电子邮件

Sending an email, via python, from one outlook account to another

我正在编写一个程序来帮助学校的生物系,它涉及发送电子邮件。我已经收集了消息内容所需的所有变量,只是电子邮件的实际发送导致了一些问题。

我环顾四周,意识到我使用的是发送到 gmail 的代码,而学校的服务器使用的是 Outlook 2010。一旦我记起这一点,我就四处寻找一些发送电子邮件的 python 代码, 但到目前为止没有任何效果。

发送一封电子邮件似乎很复杂,但我需要一些帮助才能从这里开始。

gsal.org.uk是我们学校的web服务器地址,是一个outlook服务器。

我收到的当前错误是 smtplib.SMTPException: STARTTLS extension not supported by server.,但我尝试的所有操作都不断收到各种错误。

这是代码:

        fromaddr = "test@gsal.org.uk"
        toaddrs = "technicians@gsal.org.uk"
        msg = "\r\n".join([
            "From: user",
            "To: user",
            "Subject: Practical Request",
            "",
            "Test"
            ])

        server = smtplib.SMTP_SSL('smtp.gmail.com:465')
        server.ehlo()
        server.starttls()
        # server.login(username,password)
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()
        messagebox.showinfo("Success!", "Your request has been sent successfully.")

我只想从一个电子邮件帐户(在程序中指定)发送一封电子邮件到一个名为 technicians@gsal.org.uk[即将在学校设置的电子邮件帐户=37=]。任何帮助表示赞赏。

编辑

我想我会添加一个事实,如果我删除 starttls() 行,我会得到这个: smtplib.SMTPSenderRefused: (530, b'5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/answer/14257 hw1sm42144009wjb.6 - gsmtp', 'test@gsal.org.uk')

我读过 link,但它似乎在谈论 gmail?我想用outlook?我知道我需要进行身份验证,但是如何?

为了打击垃圾邮件和保护资源,正常配置的 SMTP 服务器仅向其所有者(例如公司、组织或注册客户)提供服务。您的学校服务器可能仅在以下情况下才接受邮件:

  • 地址为学校自己的域,或
  • 来自经过身份验证的人(例如学生、老师),或者
  • 来自 IP 地址属于学校局域网的主机(在管理员允许的情况下)

此外,SMTP 服务器在 TCP 端口 25 上与其他服务器通信,并在端口 465 或 587 上与用户提交新邮件(这是您的情况)通信。(端口 25 过去用于所有邮件,现在现已弃用)

端口 465 上的通信始终加密 (TLS)。端口 587 上的通信以明文形式开始,但使用 STARTTLS 命令时,加密已打开。通常需要成功的 STARTTLS 才能允许身份验证(登录)。


为什么你的程序不起作用?

  • 您正在尝试在 TLS 连接上启动 TLS。它已经开始了。要么不要启动 TLS,要么将端口更改为 587。
  • 您正在使用 gmail 的服务器发送一封不是发往 gmail 的邮件。在这种情况下,您必须以已注册的 gmail 用户身份使用名称和密码登录。

应该有什么帮助?有关使用学校自己的服务器的详细信息,请联系本地管理员。