以下代码使用Google的Gmail服务器成功发送电子邮件,但只有在将Google帐户安全设置降低为"允许安全性较低的应用"后才能发送.
下面提供的代码(最初来自Remy LeBeau)没有包含OAuth 2.0,如果您不想让用户做出看似艰难的决定来降低其安全设置以允许您的应用程序成功,则需要使用该代码.如何将OAuth 2.0纳入Indy解决方案以满足Google更高的安全标准?
工作方案:
function TTabbedwithNavigationForm.SendEmailNow(FromStr, ToStr, Subject,
MessageBody, Host: String; Port: Integer; UserName, Pass: String): Boolean;
begin
///From Remy LeBeau Indy SMTP with SSL via gmail host
Result := False;
try
IdMessage1 := nil;
IdSSLIOHandlerSocketOpenSSL1 := nil;
IdSMTP1 := nil;
try
//setup mail message
try
IdMessage1 := TIdMessage.Create(nil);
IdMessage1.From.Address := FromStr;//// change to league email
IdMessage1.Recipients.EMailAddresses := ToStr;
IdMessage1.Subject := Subject;
IdMessage1.Body.Text := MessageBody;
//if FileExists(datafilename) then
// IdAttachmentFile := TIdAttachmentFile.Create(IdMessage1.MessageParts, datafilename);
except
Exception.RaiseOuterException(Exception.Create('Could not create message, …Run Code Online (Sandbox Code Playgroud)