2 * Reactor - EmailAction.java - Copyright © 2013 David Roden
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package net.pterodactylus.reactor.actions;
20 import java.util.Properties;
22 import javax.mail.Message.RecipientType;
23 import javax.mail.MessagingException;
24 import javax.mail.Session;
25 import javax.mail.Transport;
26 import javax.mail.internet.InternetAddress;
27 import javax.mail.internet.MimeBodyPart;
28 import javax.mail.internet.MimeMessage;
29 import javax.mail.internet.MimeMultipart;
31 import net.pterodactylus.reactor.Action;
34 * {@link Action} implementation that sends an email containing the triggering
35 * object to an email address.
37 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
39 public class EmailAction implements Action {
41 /** The name of the SMTP host. */
42 private final String hostname;
44 /** The email address of the sender. */
45 private final String sender;
47 /** The email address of the recipient. */
48 private final String recipient;
51 * Creates a new email action.
54 * The hostname of the SMTP server
56 * The email address of the sender
58 * The email address of the recipient
60 public EmailAction(String hostname, String sender, String recipient) {
61 this.hostname = hostname;
63 this.recipient = recipient;
74 public void execute(Object trigger) {
75 Properties properties = System.getProperties();
76 properties.put("mail.smtp.host", hostname);
77 Session session = Session.getInstance(properties);
78 MimeMessage message = new MimeMessage(session);
81 message.setFrom(new InternetAddress(sender));
82 message.setRecipient(RecipientType.TO, new InternetAddress(recipient));
83 message.setSubject(output.summary());
85 /* create text and html parts. */
86 MimeMultipart multipart = new MimeMultipart();
87 multipart.setSubType("alternative");
88 MimeBodyPart textPart = new MimeBodyPart();
89 textPart.setContent(output.text("text/plain", -1), "text/plain;charset=utf-8");
90 MimeBodyPart htmlPart = new MimeBodyPart();
91 htmlPart.setContent(output.text("text/html", -1), "text/html;charset=utf-8");
92 multipart.addBodyPart(textPart);
93 multipart.addBodyPart(htmlPart);
94 message.setContent(multipart);
96 Transport.send(message);
97 } catch (MessagingException me1) {