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

时间:2015-11-29 13:03:13

标签: python email python-3.x outlook python-3.4

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

我环顾四周,发现我正在使用发送到gmail的代码,而学校的服务器使用的是Outlook 2010.一旦我记得,我四处寻找发送电子邮件的python代码,但到目前为止没有任何效果。

发送电子邮件似乎非常复杂,但我需要一些帮助才能离开这里。

gsal.org.uk是我们学校的网络服务器地址,是一个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 。任何帮助表示赞赏。

修改

我想补充一点,如果我删除了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')

我已经阅读了该链接,但它似乎在谈论gmail?我想用outlook吗?我知道我需要进行身份验证,但是如何进行身份验证?

1 个答案:

答案 0 :(得分:1)

为了对抗垃圾邮件并保护资源,通常配置的SMTP服务器仅向其所有者(例如公司,组织或注册客户)提供其服务。例如。您的学校服务器可能只接受邮件:

  • 致函学校自己的域名,或
  • 来自经过身份验证的人(例如学生,教师)或
  • 来自拥有属于学校局域网的IP地址的主机(当管理员允许时)

此外,SMTP服务器与TCP端口25上的其他服务器以及用户在端口465或587上提交新邮件(在您的情况下)进行通信。(过去使用端口25用于所有邮件,现在不推荐使用)

端口465上的通信始终是加密的(TLS)。端口587上的通信以纯文本格式启动,但使用STARTTLS命令时,加密功能将打开。成功的STARTTLS通常需要允许身份验证(登录)。

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

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

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