Guest User

Untitled

a guest
Dec 4th, 2011
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.z0ltan.mail.exchange;
  2.  
  3. import java.net.HttpURLConnection;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.util.Properties;
  7.  
  8. import javax.activation.DataHandler;
  9. import javax.activation.DataSource;
  10. import javax.activation.URLDataSource;
  11. import javax.mail.Address;
  12. import javax.mail.BodyPart;
  13. import javax.mail.Message;
  14. import javax.mail.MessagingException;
  15. import javax.mail.Multipart;
  16. import javax.mail.Session;
  17. import javax.mail.Transport;
  18. import javax.mail.internet.AddressException;
  19. import javax.mail.internet.InternetAddress;
  20. import javax.mail.internet.MimeBodyPart;
  21. import javax.mail.internet.MimeMessage;
  22. import javax.mail.internet.MimeMultipart;
  23.  
  24. public class SendEmail {
  25.     private static final int MAX_SMTP_SIZE = 5; // MB
  26.  
  27.     public static void main(String[] args) {
  28.         String fromAddress = "user@address.com";
  29.         String smtpAddress = "10.0.45.1";
  30.         int smtpPort = 25;
  31.  
  32.         String attachmentLink
  33.             = "http://localhost:9999/examples/servlets/ultimate.pdf";
  34.         String[] toAddress = { "timmy.jose@hp.com", "zoltan.jose@gmail.com" };
  35.         String subject = "Report file and link";
  36.  
  37.         // First create the Properties object and use it to obtain the Session
  38.         // object
  39.         Properties props = new Properties();
  40.         props.put("mail.smtp.host", smtpAddress);
  41.         props.put("mail.smtp.port", smtpPort);
  42.         // props.put("mail.smtp.auth", true);
  43.  
  44.         Session session = Session.getInstance(props, null);
  45.         session.setDebug(true);
  46.  
  47.         // Create the Message
  48.         final MimeMessage reportMessage = new MimeMessage(session);
  49.         if (subject != null) {
  50.             try {
  51.                 reportMessage.setSubject(subject, "UTF-8");
  52.             } catch (MessagingException e) {
  53.                 e.printStackTrace();
  54.             }
  55.         }
  56.  
  57.         // Create the addresses and add to message body
  58.         try {
  59.             Address from = new InternetAddress(fromAddress);
  60.             reportMessage.setFrom(from);
  61.  
  62.             Address[] to = new InternetAddress[toAddress.length];
  63.  
  64.             for (int i = 0; i < toAddress.length; i++) {
  65.                 to[i] = new InternetAddress(toAddress[i]);
  66.             }
  67.  
  68.             reportMessage.addRecipients(Message.RecipientType.TO, to);
  69.  
  70.             // Add the attachment and the attachment link to the e-mail body
  71.             BodyPart messageBodyPart = new MimeBodyPart();
  72.             BodyPart attachBodyPart = null;
  73.  
  74.             Multipart multipart = new MimeMultipart();
  75.  
  76.             if (isAttachmentSmallerThanMaxSmtpSize(attachmentLink)) {
  77.                 attachBodyPart = new MimeBodyPart();
  78.                 DataSource source
  79.                     = new URLDataSource(new URL(attachmentLink));
  80.                 attachBodyPart.setDataHandler(new DataHandler(source));
  81.                 String file = attachmentLink.substring(attachmentLink
  82.                         .lastIndexOf('/'));
  83.                 attachBodyPart.setFileName(file);
  84.                 multipart.addBodyPart(attachBodyPart);
  85.                 messageBodyPart.setContent(attachmentLink,
  86.                         "text/plain;charset=UTF-8");
  87.             } else {
  88.                 String messageAndAttachment = "Note: The report file: "
  89.                     + attachmentLink.substring(attachmentLink
  90.                             .lastIndexOf('/') + 1)
  91.                     + " was not attached since it exceeds the user "
  92.                                         + "configured Maximum SMTP Attachment size."
  93.                         + "\n\n" + attachmentLink;
  94.                 messageBodyPart.setContent(messageAndAttachment,
  95.                         "text/plain;charset=UTF-8");
  96.             }
  97.  
  98.             multipart.addBodyPart(messageBodyPart);
  99.  
  100.             reportMessage.setContent(multipart);
  101.             reportMessage.saveChanges();
  102.  
  103.             // Send the e-mail
  104.             (new Thread() {
  105.                 public void run() {
  106.                     try {
  107.                         Transport.send(reportMessage);
  108.                     } catch (MessagingException e) {
  109.                         e.printStackTrace();
  110.                     }
  111.                 }
  112.             }).start();
  113.  
  114.         } catch (AddressException e) {
  115.             e.printStackTrace();
  116.         } catch (MessagingException e) {
  117.             e.printStackTrace();
  118.         } catch (MalformedURLException e) {
  119.             e.printStackTrace();
  120.         }
  121.     }
  122.  
  123.     private static boolean isAttachmentSmallerThanMaxSmtpSize(
  124.             String attachmentLink) {
  125.         boolean status = false;
  126.  
  127.         try {
  128.             HttpURLConnection connection = (HttpURLConnection) new URL(
  129.                     attachmentLink).openConnection();
  130.             int sizeInMB = connection.getContentLength() / (1024 * 1024);
  131.  
  132.             if (sizeInMB > MAX_SMTP_SIZE) {
  133.                 status = false;
  134.             } else {
  135.                 status = true;
  136.             }
  137.  
  138.         } catch (Exception ex) {
  139.             status = false;
  140.         }
  141.  
  142.         return status;
  143.     }
  144. }
  145.  
  146.  
  147.  
Add Comment
Please, Sign In to add comment