首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python使用SMTP -目标计算机发送电子邮件,主动拒绝连接。

Python使用SMTP -目标计算机发送电子邮件,主动拒绝连接。
EN

Stack Overflow用户
提问于 2022-11-17 15:32:33
回答 2查看 43关注 0票数 0

我试图在工作中使用Python中的smtplib包在内部发送电子邮件。我使用与R和Spyder相同的代理设置在VPN后面运行这个脚本。我使用以下代码,它是从mkyoung.com改编而来的

代码语言:javascript
复制
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请求。但是,如果我使用Blastula 套餐在R中执行相同的脚本,它可以正常工作。有人能建议我怎么拍这个吗?

代码语言:javascript
复制
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")
  )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-21 10:31:16

嗨@Ovski 99999和@Ovski

谢谢你帮我调查这个。我终于让它使用了下面的代码

代码语言:javascript
复制
import smtplib
import ssl

to = 'foo@foo-corporate.com'
corp_user = 'foo@foo-corporate.com'
corp_pwd = 'password'
smtpserver = smtplib.SMTP_SSL("smtp://foo-corporate.com")
smtp_server.ehlo()
smtp_server.login(corp_user, corp_pwd)
msg_to_send = '''
hello world!
'''

smtp_server.sendmail(user,to,msg_to_send)
smtp_server.quit()
票数 0
EN

Stack Overflow用户

发布于 2022-11-17 15:51:15

似乎根本不需要上下文。

这是一个使用TLS的例子。试试看,至少在我的环境中,这是有效的。

代码语言:javascript
复制
import smtplib

smtp_server = 'mail.example.com'
port = 587  # For starttls
sender_email = "from@mail.com"
receiver_email = 'to@mail.com'
password = r'password'
message = f'''\
From: from-name <from@mail.com>
To: to-name <to@mail.com>
Subject: testmail

testmail

'''
try:
    server = smtplib.SMTP(smtp_server, port)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)    
except Exception as e:
    # Print any error messages to stdout
    print(e)
finally:
    server.quit()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74478118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档