如何解决通过Gmail SMTP中继发送邮件时出错
我正在为我的新网站构建联系表单,并希望通过Google的SMTP中继服务器(smtp-relay.gmail.com
)发送邮件,因为我想设置“虚拟”,“不答复”发送邮件的地址。另外,我尝试使用我自己的帐户的实际Gmail凭据通过常规SMTP服务器(smtp.gmail.com
)发送该邮件,但该帐户由于不安全的应用程序而被阻止。我宁愿不启用“ Less secure app access ”选项(对我来说这并不是一个真正的选项,因为我在此帐户上使用2FA ),因此似乎是到达那里的最好方法-如果我能使其正常运行。
域的邮件托管在G Suite中,并且我已根据支持文章 Google Admin Console 中的说明在SMTP relay: Route outgoing non-Gmail messages through Google中为我的域配置了SMTP中继服务>。我使用网站的公共静态IP地址以及Web服务器所在的防火墙的静态IP地址来配置中继。我将中继配置为接受来自我的域的邮件,以允许实际上没有邮箱的“虚拟”地址,并将其设置为要求SMTP身份验证和TLS加密:
我已经为 MX
, SPF
和 DKIM
设置了DNS记录与我的域名注册商联系。
我已经等待了24小时以上,这些更改才会生效(根据在Google管理控制台中进行更改时的通知)
我什至为我的网站设置了一个应用密码,用于我的域电子邮件地址:
我在IIS上使用ASP.NET(VB)网站。我的发送代码如下:
Dim NewContact As New System.Net.Mail.MailMessage()
With NewContactMessage
.From = New System.Net.Mail.MailAddress("no-reply@mydomain.com")
.To.Add("myaddress@mydomain.com")
.Subject= "TEST MESSAGE"
.IsBodyHtml= True
.BodyEncoding = System.Text.Encoding.UTF8
.Body = "This is a test."
.Priority = System.Net.Mail.MailPriority.Normal
End With
Dim Server As New System.Net.Mail.SmtpClient()
With Server
.Port= 587
.Host= "smtp-relay.gmail.com"
.EnableSsl= True
.Send(NewContactMessage)
End With
但是,当我尝试提交联系表单时,出现错误, Mailbox unavailable. The server response was: 5.7.1 Invalid credentials for relay [X.X.X.X]. The IP address you've
:
该实际错误消息似乎肯定还有很多,但显然在途中被截断了。
我尝试在SmtpClient
块中输入凭据:
With Server
.Credentials = New System.Net.NetworkCredential("myaddress@mydomain.com","my_app_password")
.Port= 587
.Host= "smtp-relay.gmail.com"
.EnableSsl= True
.Send(NewContactMessage)
End With
在这种情况下,我收到另一个错误: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required. Learn more at
。 (如果我将凭据与“默认” Gmail SMTP服务器(smtp.gmail.com
一起使用,则会收到相同的错误。)
根据审核日志,看来我的所有配置设置更改都已完成。所有出现的东西 都是正确的,但我想念的是什么?
解决方法
就在发布此问题之前,我找到了此问题和解答-Send mail via google app with smtp relay-通过简单的解决方法解决了该问题:关闭SMTP中继服务配置设置中的需要SMTP身份验证选项。
一旦我禁用了该设置并再次尝试,一切都会正常进行。 我想我应该自己解决这个问题,但是根据Google's support article for setting up the SMTP relay (第一句话强调我的意思):
- 在“身份验证”部分中, 选中一个或两个框 以设置身份验证方法:
- 仅接受来自指定IP地址的邮件-系统仅接受来自这些IP地址的邮件来自您的域。
- 要求SMTP认证-强制使用SMTP认证来标识发送域。使用此选项要求您的客户端通过TLS连接。
此处的措词似乎有点误导,似乎表明您可以启用这两个选项,而不会彼此“干扰”。正如我所说,我可能应该自己解决这个问题-尤其是因为我正尝试从“虚拟”电子邮件帐户发送邮件-但我想这只是我自己没有想到。
我曾考虑删除此问题,但在撰写此问题之前,我已经做了很多搜索,并且以某种方式从未遇到过该特定帖子。我不确定我怎么会错过它,但我将我的问题留在这里,希望其他人以后可以更轻松地找到此解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。