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:

Napsat komentář