Nejdou posílat maily z aplikace běžící na lokálním počítači

Máte vlastní aplikaci, kterou vyvíjíte na svém počítači. Z této aplikace chcete posílat maily na nějaký externí SMTP server. Vše máte nakonfigurováno správně, ale přesto maily neodchází. Dostáváte podobnou chybu (aplikace používají Spring se snaží odeslat email přes Google SMTP)?:

Číst dálNejdou posílat maily z aplikace běžící na lokálním počítači

Posílání jednoduchých emailů přes Google SMTP

Pokud máte účet na gmail.com, můžete použít Google SMTP pro posílání emailů z vaší aplikace. Pozor ale na to, že počet takto zaslaných emailů je omezen (maximálně 20 za hodinu). Pro zkoušení to ale většinou stačí.

Funguje to tak, že Google SMTP server přijme vaši zprávu a předá ji dalšímu serveru pomocí SMTP protokolu (Simple Mail Transfer Protocol). Tak to pokračuje do té doby, dokud se zpráva nedostane na server, kde je vaše poštovní schránka. Pro přístup k poštovní schránce se pak používají protokoly POP3 nebo IMAP.

Následující příklad ukazuje poslání jednoduchého textového emailu přes Google SMTP server. Jak poslat html email ukážu v nějakém další příspěvku.

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class GoogleMail {
	public static void main(String args[]) throws AddressException, MessagingException {
		System.out.println("Started");
		
		// Set up properties
		Properties mailServerProperties = System.getProperties();
		mailServerProperties.put("mail.smtp.port", "587");
		mailServerProperties.put("mail.smtp.auth", "true");
		mailServerProperties.put("mail.smtp.starttls.enable", "true");

		// Get session
		Session mailSession = Session.getDefaultInstance(mailServerProperties);

		// Create message
		MimeMessage message = new MimeMessage(mailSession);
		message.addRecipient(Message.RecipientType.TO, new InternetAddress("email@email.cz"));
		message.setSubject("Pokusný email", "UTF-8");
		message.setText("Ahoj, toto je pokusný email.", "UTF-8");

		// Send
		Transport transport = mailSession.getTransport("smtp");
		transport.connect("smtp.gmail.com", "user", "password");
		transport.sendMessage(message, message.getAllRecipients());
		transport.close();

		System.out.println("Finished");
	}
}

Pro zaslání emailu se musí nejdříve vytvořit session, které předáme properties. Dále se vytvoří email, který by měl minimálně obsahovat TO adresu, SUBJECT a TEXT. Zároveň se dá nastavit kódování. Já jsem použil UTF-8. Nakonec se provede samotné poslání emailu (připojení na server, odeslání, ukončení připojení). Pro připojení k serveru je třeba uvést platného uživatele (pokud máte email jmeno.prijmeni@gmail.com tak jako uživatele uveďte jmeno.prijmeni) a heslo.

Pokud dostanete chybu AuthenticationFailedException: 534-5.7.14, řešení naleznete v tomto příspěvku.

Pokud vše proběhne v pořádku a přesto vám nedojde email na emailovou adresu zadanou v TO (zde je to na email@email.cz), zkontrolujte si, zda neskončil ve spamu. Z vlastní zkušenosti mohu říci, že pokud máte email na seznam.cz, zprávy zprávy se zobrazí v emailové schránce téměř okamžitě. Pokud používáte email na centrum.cz, můžete čekat i několik desítek vteřin.


Zdroj:

Posílání mailů přes Google SMTP: AuthenticationFailedException: 534-5.7.14

Pokud máte účet na gmailu, můžete používat pro zkušební posílání mailů ze vlastní aplikace, Google SMTP server. Při posílání můžete narazit na chybu AuthenticationFailedException: 534-5.7.14. Zároveň vám na váš email pravděpodobně dojde zpráva

Dobrý den,
Někdo se právě pokusil o přihlášení k vašemu účtu Google xxx.xxx@gmail.com z aplikace, která nesplňuje moderní bezpečnostní standardy…

Je potřeba zapnout přístup k účtu pro měně bezpečné aplikace: https://support.google.com/mail/answer/78754 a klikněte na „allow less secure apps to access your account“ link. Otevře se stránka https://support.google.com/accounts/answer/6010255. Zvolte Option 2 a klikněte na Go to the „Less secure apps“ section link. Nyní zvolte „Zapnout“ přístup pro méně bezpečné aplikace.

google_smtp_authenticationfailedexception

Méně zabezpečný přístup je povolen. Na váš email by měl přijít informativní email o této změně.

google_smtp_authenticationfailedexception_02