Java tutorial
// //"This sample program is provided AS IS and may be used, executed, copied and modified without royalty payment by customer (a) for its own //instruction and study, (b) in order to develop applications designed to run with an IBM WebSphere product, either for customer's own internal use //or for redistribution by customer, as part of such an application, in customer's own products. " // //Product 5630-A36, (C) COPYRIGHT International Business Machines Corp., 2001,2004 //All Rights Reserved * Licensed Materials - Property of IBM // package com.emc.plants.service.impl; import java.util.Date; import javax.mail.Message; 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.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.emc.plants.persistence.Order; import com.emc.plants.pojo.beans.CustomerInfo; import com.emc.plants.pojo.beans.EMailMessage; import com.emc.plants.service.exceptions.MailerAppException; import com.emc.plants.service.interfaces.Mailer; import com.emc.plants.utils.Util; /** * MailerBean is the implementation class for the {@link Mailer} stateless session EJB. * MailerBean implements each of the business methods in the <code>Mailer</code> * EJB remote interface and each of the EJB lifecycle methods in the javax.ejb.SessionBean * interface. * * @see Mailer */ //@Stateless(name="Mailer") @Repository("mailer") public class MailerBean implements Mailer { //public static final String MAIL_SESSION = "java:comp/env/mail/PlantsByWebSphere"; //@Resource(name="mail/PlantsByWebSphere") Session mailSession; @Autowired private EntityManagerFactory entityManagerFactory; public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) { this.entityManagerFactory = entityManagerFactory; } /** * Create the email message. * * @param orderKey The order number. * @return The email message. */ private String createMessage(long orderKey) { Util.debug("creating email message for order:" + orderKey); StringBuffer msg = new StringBuffer(); /* OrderHome orderHome = (OrderHome) Util.getEJBLocalHome("java:comp/env/ejb/Order", OrderHome.class); Order order = orderHome.findByPrimaryKey(new OrderKey(orderKey)); */ EntityManager em = entityManagerFactory.createEntityManager(); Order order = em.find(Order.class, orderKey); msg.append("Thank you for your order " + orderKey + ".\n"); msg.append("Your order will be shipped to: " + order.getShipName() + "\n"); msg.append(" " + order.getShipAddr1() + " " + order.getShipAddr2() + "\n"); msg.append(" " + order.getShipCity() + ", " + order.getShipState() + " " + order.getShipZip() + "\n\n"); msg.append("Please save it for your records.\n"); return msg.toString(); } /** * Create the Subject line. * * @param orderKey The order number. * @return The Order number string. */ private String createSubjectLine(long orderKey) { StringBuffer msg = new StringBuffer(); msg.append("Your order number " + orderKey); return msg.toString(); } /** * Create a mail message and send it. * * @param customerInfo Customer information. * @param orderKey * @throws MailerAppException */ public void createAndSendMail(CustomerInfo customerInfo, long orderKey) throws MailerAppException { try { EMailMessage eMessage = new EMailMessage(createSubjectLine(orderKey), createMessage(orderKey), customerInfo.getCustomerID()); Util.debug("Sending message" + "\nTo: " + eMessage.getEmailReceiver() + "\nSubject: " + eMessage.getSubject() + "\nContents: " + eMessage.getHtmlContents()); //Session mailSession = (Session) Util.getInitialContext().lookup(MAIL_SESSION); MimeMessage msg = new MimeMessage(mailSession); msg.setFrom(); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(eMessage.getEmailReceiver(), false)); msg.setSubject(eMessage.getSubject()); MimeBodyPart mbp = new MimeBodyPart(); mbp.setText(eMessage.getHtmlContents(), "us-ascii"); msg.setHeader("X-Mailer", "JavaMailer"); Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp); msg.setContent(mp); msg.setSentDate(new Date()); Transport.send(msg); Util.debug("\nMail sent successfully."); } catch (Exception e) { Util.debug("Error sending mail. Have mail resources been configured correctly?"); Util.debug("createAndSendMail exception : " + e); e.printStackTrace(); throw new MailerAppException("Failure while sending mail"); } } }