Skocz do zawartości
Yourek

Delphi XE - wysyłka maila z GMAIL

Rekomendowane odpowiedzi

Witam,

Mam w Delphi XE skonfigurowaną wysyłkę wiadomości email. Nie mogę sobie poradzić z wysyłką maila używając do tego konta z GMAIL.  Z serwerów takich jak Interia.pl czy O2.pl normalnie wysyłam pocztę.

Gdy próbuje przez GMAIL to mam błąd "Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentialsq18029929a956512211200b00492cfecf1c0sm295020lfr.245 - gsmtp"

Na koncie GMAIL mam włączony POP oraz IMAP. Kiedyś była opcja, że można było używać mniej bezpiecznych urządzeń, ale teraz ją wyłączyli.

Próbowałem ustawiać port 587 i utUseExplicitTLS oraz port 465 i utUseImplicitTLS jednak efekt jest ten sam.

 Czy coś należy dodatkowo ustawić aby wysyłka z GMAIL'a przeszła?

Wysyłkę robię tak:
 

// komponenty sslHandlerSMTP oraz idsmtp1 zostały wrzucone na formę 

SmtpPort := StrToInt(rgPort.Items[rgPort.ItemIndex]); // 587 lub 465

// Wybór serwera 
        if rgSerwer.ItemIndex = 0 then
        begin
          sslHandlerSMTP.Destination := 'poczta.o2.pl:' + inttostr(SmtpPort);
          sslHandlerSMTP.host := 'poczta.o2.pl';
          sslHandlerSMTP.port := SmtpPort;
        end
        else if rgSerwer.ItemIndex = 1 then
        begin
          sslHandlerSMTP.Destination := 'smtp.gmail.com:' + inttostr(SmtpPort);
          sslHandlerSMTP.host := 'smtp.gmail.com';
          sslHandlerSMTP.port := SmtpPort;
        end
        else if rgSerwer.ItemIndex = 2 then
        begin
          sslHandlerSMTP.Destination := 'poczta.interia.pl:' + inttostr(SmtpPort);
          sslHandlerSMTP.host := 'poczta.interia.pl';
          sslHandlerSMTP.port := SmtpPort;
        end
        else
        begin
          sslHandlerSMTP.Destination := 'strefa01.emailserver.pl:' + inttostr(SmtpPort);
          sslHandlerSMTP.host := 'strefa01.emailserver.pl';
          sslHandlerSMTP.port := SmtpPort;
        end;

// Ustawienie parametru TLS
        case rgTLS.ItemIndex of
          0:
            idsmtp1.UseTLS := utNoTLSSupport;
          1:
            idsmtp1.UseTLS := utUseExplicitTLS;
          2:
            idsmtp1.UseTLS := utUseImplicitTLS;
          3:
            idsmtp1.UseTLS := utUseRequireTLS;
        end;

        idsmtp1.host := MY_HOST;
        idsmtp1.Username := MY_USERNAME;
        idsmtp1.Password := MY_PASS;
        idsmtp1.port := SmtpPort;
        idsmtp1.Connect;

      if idsmtp1.Connected then
          idsmtp1.Send(idmsg1)

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Cytat

Gmail App Password

To help keep your account secure, starting May 30, 2022, Google will no longer support the use of third-party apps or devices which ask you to sign in to your Google Account using only your username and password.

Therefore, you should sign in using App Passwords. An App Password is a 16-digit passcode that gives a less secure app or device permission to access your Google Account. App Passwords can only be used with accounts that have 2-Step Verification turned on. You need to use App Password instead of the user password for user authentication.

Another solution is Gmail OAUH, please see Gmail SMTP OAUTH section.

https://www.emailarchitect.net/easendmail/kb/delphi.aspx?cat=2

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...