PL
Java - jak wysłać e-mail przy użyciu SMTP z pocztą w nazwa.pl?
8
points
W tym artykule postaram się przedstawić rozwiązanie pozwalające wysyłać maile przy uzyciu protokołu SMTP z JavaMail API oraz wykupionej usługi e-mail w nazwa.pl - rozwiązanie w jezyku Java.
Domyślnie obsługa połączeń SMTP powinna być włączona po stronie serwera.
1. Odczytanie konfiguracji
Po wejściu do usługi Active.admin powinniśmy odnaleźć konfugyrację dla naszego konta e-mail:
2. Utworzenie projektu i załaczenie biblioteki
Bilioteka znajduje się tutaj.
Można ją załączyć do projektu:
- manualnie pobierając i dodając plik
*.jar
, - wklejając kod do pliku
*.pom
.
3. Uruchomienie kodu Java
Uwagi: rozwiązanie testowano 01.05.2020.
Znając konfigurację możemy przekopiować kod i nanieść drobne modyfikacje:
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;
public class MailSender {
// konfuguracja smtp dla naszego maila
private static final String smtpDebug = "false";
private static final String smtpEmail = "my-email@my-domain.com"; // ustawić
private static final String smtpUsername = "my-email@my-domain.com"; // ustawić
private static final String smtpPassword = "put-Pa$$word-here"; // ustawić
private static final String smtpHost = "serverXYZXYZ.nazwa.pl"; // ustawić
private static final String smtpPort = "465";
private static final String smtpAuth = "true";
private static final String smtpSecurity = "ssl";
// funkcja wysyłająca
public static void main(String[] args) throws MessagingException {
String recipientEmail = "my-friend@some-domain.com"; // ustawić odbiorcę
String emailSubject = "Wiadamość z wakacji!"; // ustawić tytuł
String emailBody = "Cześć!, Jak się masz! ..."; // ustawić treść
// logika wysyłająca
Properties smtpProperties = new Properties();
smtpProperties.put("mail.debug", smtpDebug);
smtpProperties.put("mail.smtp.auth", smtpAuth);
smtpProperties.put("mail.smtp." + smtpSecurity + ".enable", true);
smtpProperties.put("mail.smtp.host", smtpHost);
smtpProperties.put("mail.smtp.port", smtpPort);
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(smtpUsername, smtpPassword);
}
};
Session session = Session.getInstance(smtpProperties, authenticator);
InternetAddress[] replyAddresses = InternetAddress.parse(smtpEmail);
InternetAddress[] recipientAddresses = InternetAddress.parse(recipientEmail);
Message message = new MimeMessage(session);
message.addFrom(replyAddresses);
message.setRecipients(Message.RecipientType.TO, recipientAddresses);
message.setReplyTo(replyAddresses);
message.setSubject(emailSubject);
Multipart multipart = new MimeMultipart();
MimeBodyPart part = new MimeBodyPart();
// typ wiadomości może zostać zmieniony na text/html
part.addHeader("Content-Type", "text/plain; charset=UTF-8");
part.setText(emailBody);
multipart.addBodyPart(part);
message.setContent(multipart);
Transport.send(message);
}
}