package util;
import bean.EmailSenderInfo;
import bean.ScheduleEmailBean;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import listener.ResourceConfiger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MailSendUtil
{
private static final Log logger = LogFactory.getLog(MailSendUtil.class);
public void sendMail(byte[] content, ScheduleEmailBean salesFollowupBean) throws IOException
{
logger.debug("==== MailSendUtil.sendMail() start====");
EmailSenderInfo mailSenderInfo = new EmailSenderInfo();
try
{
mailSenderInfo.setMailServerHost(
ResourceConfiger.get("email.server.host"));
mailSenderInfo.setTransport(
ResourceConfiger.get("email.server.transport"));
mailSenderInfo.setFromAddress(
ResourceConfiger.get("email.from.address"));
mailSenderInfo.setUserName(
ResourceConfiger.get("email.from.userName"));
mailSenderInfo.setPassword(
ResourceConfiger.get("email.from.userPassword"));
String[] toadderss = salesFollowupBean.getRecipients();
mailSenderInfo.setSubject(salesFollowupBean.getSubject());
mailSenderInfo.setToAddress(toadderss[0]);
mailSenderInfo.setToAddressArray(toadderss);
mailSenderInfo.setDoSend(true);
mailSendProccess(mailSenderInfo, content);
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void mailSendProccess(EmailSenderInfo mailSenderInfo, byte[] content)
throws Exception
{
Properties props = new Properties();
props.put("mail.smtp.host", mailSenderInfo.getMailServerHost());
props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setSubject(mailSenderInfo.getSubject(), "utf-8");
message.setSentDate(new Date());
message.setFrom(new InternetAddress(mailSenderInfo.getFromAddress()));
String[] mailToArray = mailSenderInfo.getToAddressArray();
if ((mailToArray == null) || (mailToArray.length == 0)) {
InternetAddress toAddress = new InternetAddress(
mailSenderInfo.getToAddress());
message.setRecipient(Message.RecipientType.TO, toAddress);
} else {
InternetAddress[] toAddressList = new InternetAddress[mailToArray.length];
for (int index = 0; index
if ((toAddressList == null) || (mailToArray[index] == null) ||
(mailToArray[index].trim().length() <= 0)) continue;
toAddressList[index] =
new InternetAddress(mailToArray[index]);
}
message.addRecipients(Message.RecipientType.TO, toAddressList);
}
Multipart multipart = new MimeMultipart();
MimeBodyPart iCalAttachment = new MimeBodyPart();
iCalAttachment.setDataHandler(
new DataHandler(new ByteArrayDataSource(new ByteArrayInputStream(content),
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
multipart.addBodyPart(iCalAttachment);
message.setContent(multipart);
Transport tranSport = session.getTransport(mailSenderInfo
.getTransport());
tranSport.connect(mailSenderInfo.getMailServerHost(),
mailSenderInfo.getUserName(), mailSenderInfo.getPassword());
tranSport.sendMessage(message, message.getAllRecipients());
tranSport.close();
logger.info("........send mail success....");
}
}