package crmdna.email; import com.google.apphosting.api.ApiProxy; import com.google.apphosting.api.ApiProxy.OverQuotaException; import crmdna.common.Utils; import crmdna.common.config.ConfigCRMDNA; import crmdna.user.User; import javax.activation.DataHandler; import javax.mail.*; 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 java.io.UnsupportedEncodingException; import java.util.Properties; import java.util.logging.Logger; public class GAEEmail { public static void send(EmailProp emailProp) throws UnsupportedEncodingException, MessagingException { // Client.ensureValidClient(client); Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Message message = new MimeMessage(session); String fromEmail = ConfigCRMDNA.get().toProp().fromEmail; if (fromEmail == null) fromEmail = User.SUPER_USER; Utils.ensureValidEmail(fromEmail); String fromNickName = fromEmail; InternetAddress from = new InternetAddress(fromEmail, fromNickName); message.setFrom(from); for (String email : emailProp.toEmailAddresses) { Utils.ensureValidEmail(email); InternetAddress to = new InternetAddress(email, email); message.addRecipient(Message.RecipientType.TO, to); } String applicationId = ApiProxy.getCurrentEnvironment().getAppId(); if (applicationId != null) emailProp.subject = applicationId + ": " + emailProp.subject; message.setSubject(emailProp.subject); Multipart mp = new MimeMultipart(); MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(emailProp.bodyHtml, "text/html"); mp.addBodyPart(htmlPart); if (emailProp.csvAttachmentData != null) { MimeBodyPart attachment = new MimeBodyPart(); attachment.setFileName(emailProp.attachmentName); attachment.setDataHandler(new DataHandler(new ByteArrayDataSource( emailProp.csvAttachmentData.getBytes(), "text/csv"))); mp.addBodyPart(attachment); } message.setContent(mp); Logger logger = Logger.getLogger(GAEEmail.class.getName()); //logger.info("emailProp: " + new Gson().toJson(emailProp)); //handle quota exceeded exception try { Transport.send(message); } catch (OverQuotaException e) { logger.severe(Utils.stackTraceToString(e)); } } }