【发布时间】:2022-11-17 23:51:15
【问题描述】:
我正在尝试使用 Python 中的 smtplib 包在工作内部发送电子邮件。我正在使用 R 和 Spyder 的相同代理设置在 VPN 后面运行此脚本。
我使用以下代码改编自mkyoung.com
import smtplib
to = 'foo@foo-corporate.com'
corp_user = 'foo@foo-corporate.com'
corp_pwd = 'password'
smtpserver = smtplib.SMTP_SSL(local_hostname="smtp://foo-corporate.com", port = 25)
smtpserver.connect()
一旦我尝试最后一行smtpserver.connect(),我收到错误消息:
[WinError 10061] 由于目标机器主动拒绝,无法建立连接
这表明服务器不接受 SMTP 请求。 但是,如果我使用
Blastulapackage 在 R 中执行相同的脚本,它工作正常。 谁能建议我如何解决这个问题?library(blastula) create_smtp_creds_key( id = "email_creds", user = "foo@foo-corporate.com", host = "smtp://foo-corporate.com", port = 25, use_ssl = TRUE ) email <- compose_email( body = md(" Hello, This is a test email ")) # Sending email by SMTP using a credentials file email %>% smtp_send( to = "foo@foo-corporate.com", from = "foo@foo-corporate.com", subject = "Testing the `smtp_send()` function", credentials = creds_key("email_creds") )
【问题讨论】:
-
端口 25 很少是 SSL 端口。尝试不使用 ssl 进行连接。我不能说为什么它在 R 中有效,但这可能是由于 R 自动下降到无 ssl。
-
谢谢@user99999 的快速回复,我试过了,但它给了我同样的问题。防火墙是否可以专门查看 Python 连接并阻止它们(我对这个话题知之甚少)
-
是的,与@user99999 一样,我什至知道 ISP 会阻止端口 25 作为不安全端口并将这些请求转发到死端服务器。有时仍使用端口 465,但通常使用 587