added test case for sending mails
This commit is contained in:
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* To change this license header, choose License Headers in Project Properties.
|
||||||
|
* To change this template file, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
package de.muehlencord.shared.network.mail;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
import javax.mail.Message;
|
||||||
|
import javax.mail.MessagingException;
|
||||||
|
import javax.mail.Multipart;
|
||||||
|
import javax.mail.PasswordAuthentication;
|
||||||
|
import javax.mail.Session;
|
||||||
|
import javax.mail.Transport;
|
||||||
|
import javax.mail.internet.AddressException;
|
||||||
|
import javax.mail.internet.InternetAddress;
|
||||||
|
import javax.mail.internet.MimeBodyPart;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
import javax.mail.internet.MimeMultipart;
|
||||||
|
import org.junit.Assume;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Joern Muehlencord <joern at muehlencord.de>
|
||||||
|
*/
|
||||||
|
public class TestSendMail {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(TestSendMail.class);
|
||||||
|
|
||||||
|
private final static String RECEIVER = null;
|
||||||
|
private final static String PASSWORD = null;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSendEmail() throws AddressException, MessagingException, IOException {
|
||||||
|
|
||||||
|
Assume.assumeFalse(RECEIVER == null);
|
||||||
|
Assume.assumeFalse(PASSWORD == null);
|
||||||
|
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("mail.smtp.host", "jomu.timelord.de");
|
||||||
|
props.put("mail.smtp.auth", true);
|
||||||
|
props.put("mail.smtp.starttls.enable", true);
|
||||||
|
props.put("mail.smtp.host", "jomu.timelord.de");
|
||||||
|
props.put("mail.smtp.port", "587");
|
||||||
|
props.put("mail.debug", "true");
|
||||||
|
|
||||||
|
Session mailSession = Session.getInstance(props, new javax.mail.Authenticator() {
|
||||||
|
@Override
|
||||||
|
protected PasswordAuthentication getPasswordAuthentication() {
|
||||||
|
return new PasswordAuthentication(RECEIVER, PASSWORD);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
MimeMessage message = new MimeMessage(mailSession);
|
||||||
|
InternetAddress[] address = InternetAddress.parse("joern@muehlencord.de", false);
|
||||||
|
message.setFrom(address[0]);
|
||||||
|
message.setRecipients(Message.RecipientType.TO, address);
|
||||||
|
|
||||||
|
message.setSubject("Test HTML, Plan und Attachment", "UTF-8");
|
||||||
|
|
||||||
|
String htmlBody = "<h1>Das ist ein Test</h1>";
|
||||||
|
MimeBodyPart htmlBodyPart = new MimeBodyPart();
|
||||||
|
htmlBodyPart.setContent(htmlBody, "text/html; charset=UTF-8");
|
||||||
|
|
||||||
|
String plainBody = "Das ist ein Test";
|
||||||
|
MimeBodyPart plainBodyPart = new MimeBodyPart();
|
||||||
|
plainBodyPart.setText(plainBody, "UTF-8");
|
||||||
|
|
||||||
|
Multipart multipart = new MimeMultipart("alternative");
|
||||||
|
multipart.addBodyPart(plainBodyPart);
|
||||||
|
multipart.addBodyPart(htmlBodyPart);
|
||||||
|
|
||||||
|
MimeBodyPart content = new MimeBodyPart();
|
||||||
|
content.setContent(multipart);
|
||||||
|
|
||||||
|
// add all attachments
|
||||||
|
List<File> attachments = new ArrayList<>();
|
||||||
|
attachments.add(new File("/home/jomu/youtube.txt"));
|
||||||
|
attachments.add(new File("/home/jomu/vvh-contracts.sql"));
|
||||||
|
MimeMultipart wrapper = new MimeMultipart("related");
|
||||||
|
wrapper.addBodyPart(content);
|
||||||
|
|
||||||
|
for (File attachment : attachments) {
|
||||||
|
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
|
||||||
|
attachmentBodyPart.attachFile(attachment);
|
||||||
|
String contentType = Files.probeContentType(attachment.toPath());
|
||||||
|
if (contentType != null) {
|
||||||
|
attachmentBodyPart.setHeader("Content-Type", contentType);
|
||||||
|
}
|
||||||
|
wrapper.addBodyPart(attachmentBodyPart);
|
||||||
|
}
|
||||||
|
|
||||||
|
message.setContent(wrapper);
|
||||||
|
message.setSentDate(new Date());
|
||||||
|
Transport.send(message);
|
||||||
|
String messageId = message.getHeader("Message-ID")[0];
|
||||||
|
LOGGER.info("Message-Id = {}", messageId);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user