/* * MailSender.java * * Created on den 11 september 2001, 19:32 */ package ip1.u7.a; import javax.mail.*; import javax.mail.internet.*; import java.util.*; import javax.swing.*; /** * Klassen som skickar ett e-postmeddelande * * @author Henirk Johansson, DS(= * @version vt 2001 */ public class SendMail implements Runnable { private Properties properties = null; private Session session = null; private Message message = null; private Address to = null; private Address from = null; /** mailservern */ protected String host; /** e-postmeddelandets innehållet */ protected String content; /** e-postmeddelandets ämnesrad */ protected String subject; /** e-postmeddelandets mottagare */ protected InternetAddress toAddr; /** e-postmeddelandets avsändare */ protected InternetAddress fromAddr; /** Skapar ny MailSender i en ny tråd. * @param host * @param content * @param subject * @param toAddr * @param fromAddr */ public SendMail(String host, String content, String subject, InternetAddress toAddr, InternetAddress fromAddr) { this.host = host; this.content = content; this.subject = subject; this.toAddr = toAddr; this.fromAddr = fromAddr; (new Thread(this)).start(); } /** Delar upp arbetet med att skapa och skicka ett meddelande i småbitar. * för att subklassning skall gå lättare, man behöver bara gå in i den bit man är * intresserad av. */ private void sendMessage() { try { properties = getProperties(); session = getSession(properties, null); message = getMessage(session); setContent(message); setSubject(message); addRecipients(message); addFroms(message); send(message); } catch(MessagingException e) { JOptionPane.showMessageDialog(null, e.toString(), "Error", JOptionPane.ERROR_MESSAGE); } } /** Skapar Properties-objekt med egenskaper för den här sessionen. * @return egenskaper */ protected Properties getProperties() { Properties prop = new Properties(); prop.put("mail.smtp.host", host); return prop; } /** Skapar den här sessionen * @param properties egenskaper för denna session * @param authenticator authentikator för denna session (null) * @throws MessagingException om Session inte kan skapas * @return nytt Javamail Session-objekt */ protected Session getSession(Properties properties, Authenticator authenticator) throws MessagingException { return Session.getInstance(properties, authenticator); } /** Skapar ett nytt Javamail Message-objekt * @param session Det här meddelandets Session * @throws MessagingException kastas om skapandet av Message misslyckas * @return ett Javamail Message-objekt */ protected Message getMessage(Session session) throws MessagingException { return new MimeMessage(session); } /** Lägger till innehåll i meddelande * @param message meddelandet som får nytt innehåll * @throws MessagingException om något går snett */ protected void setContent(Message message) throws MessagingException { ((MimeMessage) message).setText(content); } /** sätter ämnesraden i meddelandet. * @param message meddelandet som får ny ämnesrad * @throws MessagingException om något går snett */ protected void setSubject(Message message)throws MessagingException { ((MimeMessage) message).setSubject(subject); } /** sätter mottagare för meddelandet. * @param message meddelandet som får mottagare * @throws MessagingException om något går snett */ protected void addRecipients(Message message) throws MessagingException { ((MimeMessage) message).addRecipient(Message.RecipientType.TO, toAddr); } /** sätter avsändare för meddelandet. * @param message meddelandet som får avsändare * @throws MessagingException om något går snett */ protected void addFroms(Message message) throws MessagingException { ((MimeMessage) message).setFrom(fromAddr); } /** Skickar meddelandet * @param message meddelandet som skall skickas * @throws MessagingException om något går på tok */ protected void send(Message message) throws MessagingException { Transport.send((MimeMessage) message); } /** implementerar Runnable */ public void run() { sendMessage(); } }