我正在使用 Delphi 11开发Windows应用程序,我正在使用SMTP发送邮件,从上周开始,我收到了错误-“用户名和密码不被接受”。但是,早些时候相同的代码工作正常。请提供一些解决方案来解决这个问题。
with IdSMTP1 Do
begin
IOHandler := IdSSLIOHandlerSocketOpenSSL1;
UseTLS := utUseImplicitTLS;
Host := SMTP;
Username := FromUser;
Password := FromPassword;
Port := StrToIntDef(PortNumber, 0);
IdMessage1.From.Address := IdSMTP1.Username; // sender
IdMessage1.From.Name := 'Subject';
try
Connect;
try
Send(IdMessage1);
Result := True;
finally
Disconnect;
end;
except
on E:Exception do
begin
end;
end;
end;
1条答案
按热度按时间qgzx9mmu1#
谷歌不久前发布了以下声明:
Less secure apps & your Google Account
为确保您的账户安全,自2022年5月30日起, Google不再支持使用要求您仅使用用户名和密码登录Google帐户的第三方应用程序或设备。
因此,您有几个选择继续使用GMail:
FromPassword
变量中使用该变量代替普通密码。无需更改其他代码。如果您不想更改代码,这是首选解决方案。TIdSMTP
的OAuth身份验证:OAuth 2.0 Mechanism。例如,参见this GitHub repo,了解与Indy的TIdSMTP
一起工作的第三方OAuth实现。此外,我最近将我自己的
sasl-oauth
branch签入到Indy's GitHub repo,其中包含一些与OAuthor相关的更改。您仍然需要自己与Gmail交互以获得必要的身份验证令牌,但您可以将其与TIdSMTP.SASLMechanisms
集合的新TIdSASLXOAuth2
类一起使用(注意:它还没有被测试)。