Send e-mail using gmail and Indy
It was because Google blocked login this way. So after spending 10 hours triple checking every possible setting in my code I found this page:
https://www.google.com/settings/security/lesssecureapps
and enabled access for "less secure apps".
UPDATE:
After that try to send an e-mail with Delphi and then if it fails log into your Gmail account and visit these 2 pages:
https://myaccount.google.com/device-activity
https://myaccount.google.com/secureaccount
and confirm this new "unknown device" is you (it's your Delphi app).
Tom
Updated on June 25, 2022Comments
-
Tom almost 2 years
I am trying to send an e-mail from Delphi using gmail. I have Indy 10.5.9.0 and Delphi XE3.
I got example code from: http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/
I also tried other example codes but with same results.
I have libeay32.dll and ssleay32.dll from here: http://www.andrecelestino.com/wp-content/files/DLLs-SSL-DelphiXE.rar but I also tried: http://indy.fulgan.com/SSL/openssl-1.0.2d-i386-win32.zip with no luck.
My code (FULL):
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdMessage, IdSMTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdText; procedure TForm1.Button1Click(Sender: TObject); var // variáveis e objetos necessários para o envio IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL; IdSMTP: TIdSMTP; IdMessage: TIdMessage; IdText: TIdText; sAnexo: string; begin // instanciação dos objetos IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self); IdSMTP := TIdSMTP.Create(Self); IdMessage := TIdMessage.Create(Self); try // Configuração do protocolo SSL (TIdSSLIOHandlerSocketOpenSSL) IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23; IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient; // Configuração do servidor SMTP (TIdSMTP) IdSMTP.IOHandler := IdSSLIOHandlerSocket; IdSMTP.UseTLS := utUseImplicitTLS; IdSMTP.AuthType := satDefault; IdSMTP.Port := 465; IdSMTP.Host := 'smtp.gmail.com'; IdSMTP.Username := '[email protected]'; IdSMTP.Password := 'MYPASS'; // Configuração da mensagem (TIdMessage) IdMessage.From.Address := '[email protected]'; IdMessage.From.Name := 'John Smith'; IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address; IdMessage.Recipients.Add.Text := '[email protected]'; IdMessage.Subject := 'Hello World'; IdMessage.Encoding := meMIME; // Configuração do corpo do email (TIdText) IdText := TIdText.Create(IdMessage.MessageParts); IdText.Body.Add('The body of the e-mail goes here'); IdText.ContentType := 'text/plain; charset=iso-8859-1'; // Conexão e autenticação try IdSMTP.Connect; IdSMTP.Authenticate; except on E:Exception do begin MessageDlg('Cannot authenticate: ' + E.Message, mtWarning, [mbOK], 0); Exit; end; end; // Envio da mensagem try IdSMTP.Send(IdMessage); MessageDlg('Message sent successfully!', mtInformation, [mbOK], 0); except On E:Exception do begin MessageDlg('Error while sending a message: ' + E.Message, mtWarning, [mbOK], 0); end; end; finally // liberação dos objetos da memória FreeAndNil(IdMessage); FreeAndNil(IdSSLIOHandlerSocket); FreeAndNil(IdSMTP); end; end;
But I only get this error from Gmail:
https://accounts.google.com/ContinueSignIn?sarp=1&scc=1sdf[...] Please log in via your web browser and then try again. Learn more at https://support.google.com/mail/answer/78754 t1sm2526415lcc.25 - gsmtp
I did log on https://accounts.google.com/ContinueSignIn?sarp=1&scc=1sdf[...] but I didn't tell me anything really.