View difference between Paste ID: KnsUuAhG and JevkZV92
SHOW: | | - or go back to the newest paste.
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;
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