我维护并开发了一个程序(除其他外)通过 GMail 发送电子邮件。
到目前为止,发送电子邮件没有出现任何问题,但几天前,此功能停止工作,并出现“凭据错误”消息。我查看了 GMail 的帮助,找到了这个解释/警告/你有什么:
为了确保您的帐户安全,从 2022 年 5 月 30 日起,Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。
解决方案是使用“应用程序特定”密码。
我在看这个问题其中规定:
我最近的尝试是在 Gmail 上创建“应用程序特定”密码
但所附代码实际上并未显示密码是如何发送的。
阅读问题及其答案,我对我的程序做了一些更改:
Port := 995
UseTLS := utUseImplicitTLS
SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]
这些更改之后,在尝试发送测试邮件(仍然没有应用程序特定密码)时,我得到了响应
回复代码无效:+OK
这可能意味着我的程序失败,因为它没有发送应用程序特定的密码。
我想知道的是:如何发送该密码?
下面是我作为线程执行的代码,因此所有组件都在代码中定义:
email:= TIdMessage.Create (nil);
try
email.LoadFromFile (FFileName);
email.OnInitializeISO:= DoInitializeISO;
// DeleteFile (FFileName);
smtp:= TIdSMTP.Create (nil);
try
smtp.OnFailedRecipient:= FailedRecipient;
ssl:= TIdSSLIOHandlerSocketOpenSSL.Create (smtp);
ssl.SSLOptions.SSLVersions:= [sslvTLSv1];
smtp.OnStatus := DoStatus;
smtp.IOHandler:= ssl;
smtp.Host:= FHost;
smtp.Password:= FPassword; // now app passord
smtp.Username:= FUsername;
smtp.UseTLS:= utUseExplicitTLS;
smtp.Port:= 587;
smtp.Connect;
try
smtp.Send (email);
finally
smtp.Disconnect;
end;
finally
ssl.free;
smtp.Free;
end;
finally
email.Free;
end;
应用程序专用密码只是 Gmail 为您生成的密码,然后您可以使用它来代替普通密码(即,在TIdSMTP.Password
财产)。 Gmail 的文档对此进行了解释:
使用应用程序密码登录
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)