通过 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 用户身份使用名称和密码登录。
应该有什么帮助?有关使用学校自己的服务器的详细信息,请联系本地管理员。
我正在编写一个程序来帮助学校的生物系,它涉及发送电子邮件。我已经收集了消息内容所需的所有变量,只是电子邮件的实际发送导致了一些问题。
我环顾四周,意识到我使用的是发送到 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 用户身份使用名称和密码登录。
应该有什么帮助?有关使用学校自己的服务器的详细信息,请联系本地管理员。