当前位置: 首页 > 面试题库 >

如何不通过身份验证直接将邮件发送到SMTP服务器?

赫连法
2023-03-14
问题内容

我想通过直接连接到将电子邮件直接从脚本发送到Gmail电子邮件帐户smtp.gmail.com

但是,我不希望脚本中没有gmail密码。据我了解,Gmail似乎需要进行身份验证,才能传递任何邮件,包括发送给自己的用户。

我的问题是,来自另一个SMTP服务器的邮件是如何传递的,因为该SMTP服务器将没有Gmail凭据。Gmail是否只需要对“ 匿名
”发件人进行身份验证,并且由于我的脚本是在个人计算机上运行的,因此它具有更高的安全性吗?这是我正在运行的python脚本:

import smtplib
import email
msg = email.message.Message()
msg["From"] = "user@gmail.com"
msg["To"] = "user@gmail.com"
msg["Subject"] = "Test message"
server = smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.ehlo_or_helo_if_needed()
try:
    failed = server.sendmail("user@gmail.com","user@gmail.com", msg.as_string())
    server.close()
except Exception as e:
    print(e)

当我运行此脚本时,输出为:

(530, b'5.5.1 Authentication Required. Learn more at
5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 fw5sm21125889wib.0', 'user@gmail.com')

我的问题是,外部SMTP服务器如何避免此问题?它们是在本地脚本中复制的,还是需要正确的反向DNS记录,SPF记录等?


问题答案:

您可以使用某些未经身份验证的外部SMTP服务器(或本地SMTP),但是发送的邮件将被Google的垃圾邮件过滤器捕获,因为 msg [“
From”]
@ google.com ,而实际的SMTP不是 smtp.gmail .com

这些SMTP服务器还必须在ISP的DNS中具有正确的反向区域,否则此smtp将被google阻止。



 类似资料:
  • 我正在尝试使用office 365帐户设置我们的无回复电子邮件通知。我已向管理员请求取消选中SMTP验证并创建了应用程序密码,但仍然在发送电子邮件时出错。电子邮件有MFA SMTP配置 用户名-无回复电子邮件帐户 仍然在下面抛出异常 SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.7.57客户端未通过发送邮件的身份验证。[HK2PR02CA0208.apcprd02.pro

  • 我目前拥有的代码是: 我试图发送到的电子邮件地址托管在Office 365的Outlook上。我们可能需要稍后更改特定地址,但它们可能配置相同。 但是,每当我尝试运行命令时,都会收到同样的错误,错误的全文是: 我已经尝试了一些不同的方法,比如在25到587之间切换端口,将主机更改为office365的,或者将和切换为true或false。但是我总是看到同样的错误。我还遗漏了什么吗?

  • 我正试图通过gmail服务器通过java代码发送邮件,但面临 以下是发送邮件的代码:-` ` 这里需要注意的重要一点是,这段代码可以在某些计算机上工作。 请帮我一下,提前谢谢。

  • 我正在使用C#创建示例电子邮件发送器,但它显示一个错误是: SMTP服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。 请帮助我获取邮件发件人代码示例 状态:System.Net.Mail.SMTPStatusCode.MusTissuestarttlsFirst

  • 我正在尝试使用javamail和smtp发送邮件。当我从我的gmail地址发送邮件时,它对我有效。我改变了从我的交换账户发送的相同代码,但它不起作用。我正在获得身份验证失败异常。 密码 我尝试使用默认端口,即25,但那一次出现了错误,显示了错误的端口号。所以我假设端口号是对的。我尝试了ping主机和它的工作。我尝试的用户名。但总是有同样的例外。请帮我修一下。 提前谢谢 我启动了调试,得到了以下日志

  • 我正在尝试通过smtp发送邮件,但它显示错误消息。我正在使用主机号578.after执行程序,它显示无法将套接字转换为TLS;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPath