Subversion Repositories SmartDukaan

Rev

Rev 13018 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
11178 vikram.rag 1
package in.shop2020.utils;
2
import java.io.BufferedReader;
3
import java.io.FileNotFoundException;
4
import java.io.FileReader;
5
import java.io.IOException;
11215 vikram.rag 6
import java.security.Security;
7
import java.util.ArrayList;
11178 vikram.rag 8
import java.util.Date;
11215 vikram.rag 9
import java.util.HashMap;
10
import java.util.List;
11
import java.util.Map;
11178 vikram.rag 12
import java.util.Properties;
13
 
14
import javax.activation.DataHandler;
15
import javax.activation.DataSource;
16
import javax.activation.FileDataSource;
17
import javax.mail.Message;
11214 vikram.rag 18
import javax.mail.MessagingException;
11178 vikram.rag 19
import javax.mail.Multipart;
11215 vikram.rag 20
import javax.mail.PasswordAuthentication;
11178 vikram.rag 21
import javax.mail.Session;
22
import javax.mail.Transport;
11215 vikram.rag 23
import javax.mail.internet.AddressException;
11178 vikram.rag 24
import javax.mail.internet.InternetAddress;
25
import javax.mail.internet.MimeBodyPart;
26
import javax.mail.internet.MimeMessage;
27
import javax.mail.internet.MimeMultipart;
28
 
29
public class EmailUtils {
11224 vikram.rag 30
	public static void main(String... args) throws IOException, MessagingException{
11178 vikram.rag 31
 
32
		System.out.println("Test Email Start");
13016 manish.sha 33
		String[] sendTo = { "manish.sharma@shop2020.in"};
11215 vikram.rag 34
		EmailUtils emailUtils = new EmailUtils();
11277 vikram.rag 35
		//emailUtils.sendEmail(sendTo,"------DONT PANIC--------TEST EMAIL--------","FBA Sale ","build@shop2020.in","/home/Mobiles-Tablets-FBA-Sale.xls","/home/Mobiles-Tablets-FBA-body.html");
36
		String emailFromAddress = "build@shop2020.in";
13018 manish.sha 37
		sendTo = new String[] {"rajneesh.arora@shop2020.in","chandan.kumar@shop2020.in","khushal.bhatia@shop2020.in","manish.sharma@shop2020.in"};
11277 vikram.rag 38
		String emailSubjectTxt = "FBA Sale (Except Mobiles and Tablets)";
39
		String AMAZON_FBA_SHEET = "/home/Except-Mobiles-Tablets-FBA-Sale.xls";
40
		String AMAZON_FBA_SHEET_BODY = "/home/Except-Mobiles-Tablets-FBA-body.html";
41
		emailUtils.sendEmail(sendTo, emailSubjectTxt, "", emailFromAddress,AMAZON_FBA_SHEET,AMAZON_FBA_SHEET_BODY );
42
 
43
		AMAZON_FBA_SHEET = "/home/FBA-Stock-Mobiles-Tablets-File.xls";
44
		String AMAZON_FBA_SHEET_HTML_BODY = "/home/FBA-Mobiles-Tablets-CONTENT-BODY-Stock-File.html";
45
		emailFromAddress = "build@shop2020.in";
13019 manish.sha 46
		sendTo = new String[]{"rajneesh.arora@shop2020.in","chaitnaya.vats@shop2020.in","khushal.bhatia@shop2020.in","manoj.kumar@shop2020.in","manish.sharma@shop2020.in"};
11277 vikram.rag 47
		emailSubjectTxt = "FBA Stock Estimation Sheet (Mobiles and Tablets)";
48
		emailUtils.sendEmail(sendTo, emailSubjectTxt, "",emailFromAddress, AMAZON_FBA_SHEET,AMAZON_FBA_SHEET_HTML_BODY);
49
		AMAZON_FBA_SHEET = "/home/FBA-Except-Mobiles-Tablets-Stock-File.xls";
50
		AMAZON_FBA_SHEET_HTML_BODY = "/home/FBA-Except-Mobiles-Tablets-CONTENT-BODY-Stock-File.html";
11278 vikram.rag 51
		emailFromAddress = "build@shop2020.in";
13019 manish.sha 52
		sendTo = new String[] {"rajneesh.arora@shop2020.in","chandan.kumar@shop2020.in","khushal.bhatia@shop2020.in","manish.sharma@shop2020.in"};
11278 vikram.rag 53
		emailSubjectTxt = "FBA Stock Estimation Sheet (Except Mobiles and Tablets)";
11277 vikram.rag 54
		emailUtils.sendEmail(sendTo, emailSubjectTxt, "",emailFromAddress, AMAZON_FBA_SHEET, AMAZON_FBA_SHEET_HTML_BODY);
11178 vikram.rag 55
		System.out.println("Test Email Sent");
56
 
57
	}
58
 
11275 vikram.rag 59
	/**	
11178 vikram.rag 60
	 * Utility method to send simple HTML email
61
	 * @param session
62
	 * @param toEmail
63
	 * @param subject
64
	 * @param body
65
	 */
11224 vikram.rag 66
	public void sendEmail(String recipients[], String subject, String body, String from, String filename,String htmlFileName) throws MessagingException {
11275 vikram.rag 67
		System.out.println("EmailUtils Email Start");
11215 vikram.rag 68
		try {
11224 vikram.rag 69
			BufferedReader bufferedReader = new BufferedReader(new FileReader(htmlFileName));
70
 
71
			StringBuffer htmlContent = new StringBuffer();
72
			String line = null;
73
 
74
			while((line =bufferedReader.readLine())!=null){
75
 
76
				htmlContent.append(line).append("\n");
77
 
78
			}
79
 
80
			Message msg = prepareMessage(recipients, subject, from);
11215 vikram.rag 81
			//Create the multi-part object to hold the text and attachment parts
11214 vikram.rag 82
			Multipart multipart = new MimeMultipart();
11224 vikram.rag 83
 
84
			MimeBodyPart htmlPart = new MimeBodyPart();
85
 
86
			htmlPart.setContent(htmlContent.toString(), "text/html; charset=utf-8");
87
 
88
			// create the message part
11178 vikram.rag 89
			MimeBodyPart messageBodyPart = new MimeBodyPart();
90
			//Part 1: Text message
91
			messageBodyPart.setText(body);
11224 vikram.rag 92
			multipart.addBodyPart(htmlPart);
11178 vikram.rag 93
			//Part 2: Attachment
94
			messageBodyPart = new MimeBodyPart();
95
			DataSource source = new FileDataSource(filename);
96
			messageBodyPart.setDataHandler(new DataHandler(source));
97
			String[] names = filename.split("/");
98
			messageBodyPart.setFileName(names[names.length - 1]);
99
			multipart.addBodyPart(messageBodyPart);
11215 vikram.rag 100
			// Put parts in message
101
			msg.setContent(multipart);
102
			Transport.send(msg);
103
		} catch (Exception e) {
11276 vikram.rag 104
			if (hasMultipleDomains(recipients)) {
105
				for (List<String> subReceipients : getReceipientsPerDomain(recipients).values()) {
106
					sendEmail(subReceipients.toArray(new String[0]), subject, body, from , filename,htmlFileName);
107
				}
108
				return;
109
			}
110
 
111
			throw new MessagingException(e.getMessage(), e);
112
 
11215 vikram.rag 113
		}
114
	}
115
	private Message prepareMessage(String[] recipients, String subject,
116
			final String from) throws AddressException,
117
			MessagingException {
118
		Properties props = new Properties();
119
		props.put("mail.smtp.host","localhost");
11307 vikram.rag 120
		Session session = Session.getInstance(props, null);
121
		//Session session = Session.getDefaultInstance(props,null);
11215 vikram.rag 122
 
123
		Message msg = new MimeMessage(session);
124
 
125
		//Set the from address
126
		InternetAddress addressFrom = new InternetAddress(from);
127
		msg.setFrom(addressFrom);
128
		InternetAddress[] addressTo = new InternetAddress[recipients.length];
129
		for (int i = 0; i < recipients.length; i++) {
130
			addressTo[i] = new InternetAddress(recipients[i]);
11178 vikram.rag 131
		}
11215 vikram.rag 132
		msg.setRecipients(Message.RecipientType.TO, addressTo);
133
 
134
		//Setting the Subject
135
		msg.setSubject(subject);
136
		return msg;
137
	}
138
	private boolean hasMultipleDomains(String[] recipients) {
139
		String domain = extractDomainFromEmailAddress(recipients[0]);
140
		for (String recipient : recipients) {
141
			if (!domain.equals(extractDomainFromEmailAddress(recipient))) {
142
				return true;
143
			}
11178 vikram.rag 144
		}
11215 vikram.rag 145
 
146
		return false;
11178 vikram.rag 147
	}
11215 vikram.rag 148
 
149
	private String extractDomainFromEmailAddress(String recipient) {
150
		return recipient.split("@")[1];
151
	}
11224 vikram.rag 152
 
11215 vikram.rag 153
	private Map<String, List<String>> getReceipientsPerDomain(String[] recipients) {
154
		Map<String, List<String>> result = new HashMap<String, List<String>>();
155
		for (String recipient : recipients) {
156
			String domain = extractDomainFromEmailAddress(recipient);
157
 
158
			if (!result.containsKey(domain)) {
159
				result.put(domain, new ArrayList<String>());
160
			}
161
 
162
			result.get(domain).add(recipient);
163
		}
164
 
165
		return result;
166
	}
167
 
168
 
169
 
11178 vikram.rag 170
}