Subversion Repositories javautils

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. package de.viathinksoft.utils.mail.sender;
  2.  
  3. // Ref:
  4. // http://openbook.galileocomputing.de/javainsel8/javainsel_18_012.htm#mjb306e4632c440d0524d00f224d4fa1bb - Kapitel 18.12.6
  5. // http://java.sun.com/developer/onlineTraining/JavaMail/contents.html
  6.  
  7. import java.util.Properties;
  8.  
  9. import javax.mail.Authenticator;
  10. import javax.mail.Message;
  11. import javax.mail.MessagingException;
  12. import javax.mail.Session;
  13. import javax.mail.Transport;
  14. import javax.mail.internet.InternetAddress;
  15. import javax.mail.internet.MimeMessage;
  16.  
  17. import de.viathinksoft.utils.mail.InvalidMailAddressException;
  18.  
  19. abstract public class RawMailSender {
  20.  
  21.         private static final String TRANSPORT_PROTOCOL = "smtp";
  22.  
  23.         protected Session session;
  24.         protected Message msg;
  25.         protected Properties props;
  26.         protected Authenticator auth;
  27.  
  28.         private String smtpHost = "localhost";
  29.         private String smtpUsername = "";
  30.         private String smtpPassword = "";
  31.         private int smtpPort = 25;
  32.         private boolean smtpAuth = false;
  33.         // private String smtpAuthUser = "";
  34.         // private String smtpAuthPass = "";
  35.         private String recipient = "";
  36.         private String subject = "";
  37.         private String mailFrom = "";
  38.  
  39.         public String getMailFrom() {
  40.                 return mailFrom;
  41.         }
  42.  
  43.         public void setMailFrom(String mailFrom) throws InvalidMailAddressException {
  44.                 if (mailFrom == null) throw new InvalidMailAddressException();
  45.                 this.mailFrom = mailFrom.trim();
  46.         }
  47.  
  48.         public String getRecipient() {
  49.                 return recipient;
  50.         }
  51.  
  52.         public void setRecipient(String recipient) throws InvalidMailAddressException {
  53.                 if (recipient == null) throw new InvalidMailAddressException();
  54.                 this.recipient = recipient.trim();
  55.         }
  56.  
  57.         public String getSubject() {
  58.                 return subject;
  59.         }
  60.  
  61.         public void setSubject(String subject) {
  62.                 this.subject = subject;
  63.                 if (this.subject == null)
  64.                         this.subject = "";
  65.         }
  66.  
  67.         public String getSmtpHost() {
  68.                 return smtpHost;
  69.         }
  70.  
  71.         public void setSmtpHost(String smtpHost) {
  72.                 this.smtpHost = smtpHost;
  73.                 if (this.smtpHost == null)
  74.                         this.smtpHost = "";
  75.         }
  76.  
  77.         public String getSmtpUsername() {
  78.                 return smtpUsername;
  79.         }
  80.  
  81.         public void setSmtpUsername(String smtpUsername) {
  82.                 this.smtpUsername = smtpUsername;
  83.                 if (this.smtpUsername == null)
  84.                         this.smtpUsername = "";
  85.         }
  86.  
  87.         public String getSmtpPassword() {
  88.                 return smtpPassword;
  89.         }
  90.  
  91.         public void setSmtpPassword(String smtpPassword) {
  92.                 this.smtpPassword = smtpPassword;
  93.                 if (this.smtpPassword == null)
  94.                         this.smtpPassword = "";
  95.         }
  96.  
  97.         public boolean isSmtpAuth() {
  98.                 return smtpAuth;
  99.         }
  100.  
  101.         public void setSmtpAuth(boolean smtpAuth) {
  102.                 this.smtpAuth = smtpAuth;
  103.         }
  104.  
  105.         // public String getSmtpAuthUser() {
  106.         // return smtpAuthUser;
  107.         // }
  108.         //
  109.         // public void setSmtpAuthUser(String smtpAuthUser) {
  110.         // this.smtpAuthUser = smtpAuthUser;
  111.         // if (this.smtpAuthUser == null) this.smtpAuthUser = "";
  112.         // }
  113.         //
  114.         // public String getSmtpAuthPass() {
  115.         // return smtpAuthPass;
  116.         // }
  117.         //
  118.         // public void setSmtpAuthPass(String smtpAuthPass) {
  119.         // this.smtpAuthPass = smtpAuthPass;
  120.         // if (this.smtpAuthPass == null) this.smtpAuthPass = "";
  121.         // }
  122.  
  123.         public int getSmtpPort() {
  124.                 return smtpPort;
  125.         }
  126.  
  127.         public void setSmtpPort(int smtpPort) {
  128.                 this.smtpPort = smtpPort;
  129.         }
  130.  
  131.         protected void generateProperties()
  132.                         throws AuthentificateDataIncompleteException {
  133.                 props = new Properties();
  134.  
  135.                 // http://72.5.124.55/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html
  136.                 if ((smtpHost != null) && (!"".equals(smtpHost))) {
  137.                         props.put("mail.smtp.host", smtpHost);
  138.                 }
  139.                 props.setProperty("mail.transport.protocol", TRANSPORT_PROTOCOL);
  140.                 props.setProperty("mail.smtp.port", "" + smtpPort);
  141.                 if ((smtpUsername != null) && (!"".equals(smtpUsername))) {
  142.                         props.setProperty("mail.smtp.user", smtpUsername);
  143.                 }
  144.  
  145.                 props.put("mail.smtp.auth", smtpAuth);
  146.                 if (smtpAuth) {
  147.                         String smtpAuthUser = smtpUsername;
  148.                         String smtpAuthPass = smtpPassword;
  149.  
  150.                         if ((smtpAuthUser != null) && (!"".equals(smtpAuthUser))) {
  151.                                 if ((smtpAuthPass != null) && (!"".equals(smtpAuthPass))) {
  152.                                         auth = new SmtpAuthenticator(smtpAuthUser, smtpAuthPass);
  153.                                 } else {
  154.                                         throw new AuthentificateDataIncompleteException();
  155.                                 }
  156.                         } else {
  157.                                 throw new AuthentificateDataIncompleteException();
  158.                         }
  159.                 } else {
  160.                         auth = null;
  161.                 }
  162.  
  163.                 if ((mailFrom != null) && (!"".equals(mailFrom))) {
  164.                         props.setProperty("mail.smtp.from", mailFrom);
  165.                 }
  166.         }
  167.  
  168.         protected void generateSession() {
  169.                 // http://blog.dafuer.de/2006/08/22/javamail-access-to-default-session-denied/
  170.                 // final Session session = Session.getDefaultInstance(props, auth);
  171.                 session = Session.getInstance(props, auth);
  172.         }
  173.  
  174.         protected void generateMailObject() throws MessagingException,
  175.                         AuthentificateDataIncompleteException {
  176.  
  177.                 /* final Message */msg = new MimeMessage(session);
  178.  
  179.                 final InternetAddress addressTo = new InternetAddress(recipient);
  180.                 msg.setRecipient(Message.RecipientType.TO, addressTo);
  181.                 msg.setSubject(subject);
  182.  
  183.                 if ((mailFrom != null) && (!"".equals(mailFrom))) {
  184.                         final InternetAddress addressFrom = new InternetAddress(mailFrom);
  185.                         msg.setFrom(addressFrom);
  186.                 }
  187.         }
  188.  
  189.         protected void doSend() throws MessagingException {
  190.                 Transport tr = session.getTransport(TRANSPORT_PROTOCOL);
  191.                 tr.connect(smtpHost, smtpPort, smtpUsername, smtpPassword);
  192.                 msg.saveChanges(); // don't forget this
  193.                 tr.sendMessage(msg, msg.getAllRecipients());
  194.                 tr.close();
  195.         }
  196.  
  197.         public void sendMail() throws MessagingException,
  198.                         AuthentificateDataIncompleteException {
  199.  
  200.                 // Damit die Funktionalität später erweitert oder verändert werden kann!
  201.                 generateProperties();
  202.                 generateSession();
  203.                 generateMailObject();
  204.                 doSend();
  205.         }
  206. }