package com.jshop.action; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import javax.annotation.Resource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.json.annotations.JSON; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.task.TaskExecutor; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Controller; import com.jshop.action.templates.CreateHtml; import com.jshop.action.tools.Validate; import com.jshop.entity.CartT; import com.jshop.entity.GoodsT; import com.jshop.entity.UserT; import com.jshop.service.CartTService; import com.jshop.service.GoodsTService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.ResolverUtil.Test; import freemarker.template.TemplateException; @ParentPackage("jshop") @Controller("sendSystemEmail") public class SendSystemEmail extends ActionSupport { private TaskExecutor taskExecutor; private CreateHtml createHtml; private CartTService cartTService; private GoodsTService goodsTService; private String username; private String sysSendmail; private String sysMailSmtp; private String sysMailPort; private String smtpusername; private String smtppwd; private String orderid; private String email; private boolean flag; @JSON(serialize = false) public GoodsTService getGoodsTService() { return goodsTService; } public void setGoodsTService(GoodsTService goodsTService) { this.goodsTService = goodsTService; } @JSON(serialize = false) public CartTService getCartTService() { return cartTService; } public void setCartTService(CartTService cartTService) { this.cartTService = cartTService; } @JSON(serialize = false) public TaskExecutor getTaskExecutor() { return taskExecutor; } public void setTaskExecutor(TaskExecutor taskExecutor) { this.taskExecutor = taskExecutor; } @JSON(serialize = false) public CreateHtml getCreateHtml() { return createHtml; } public void setCreateHtml(CreateHtml createHtml) { this.createHtml = createHtml; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSysSendmail() { return sysSendmail; } public void setSysSendmail(String sysSendmail) { this.sysSendmail = sysSendmail; } public String getSysMailSmtp() { return sysMailSmtp; } public void setSysMailSmtp(String sysMailSmtp) { this.sysMailSmtp = sysMailSmtp; } public String getSysMailPort() { return sysMailPort; } public void setSysMailPort(String sysMailPort) { this.sysMailPort = sysMailPort; } public String getSmtpusername() { return smtpusername; } public void setSmtpusername(String smtpusername) { this.smtpusername = smtpusername; } public String getSmtppwd() { return smtppwd; } public void setSmtppwd(String smtppwd) { this.smtppwd = smtppwd; } public String getOrderid() { return orderid; } public void setOrderid(String orderid) { this.orderid = orderid; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } /** * 清理错误 */ @Override public void validate() { this.clearErrorsAndMessages(); } /** * 获取网站根目录 * * @param map * @throws UnknownHostException */ public String getBasePath() throws UnknownHostException { HttpServletRequest request = ServletActionContext.getRequest(); String path = request.getContextPath(); InetAddress inet = InetAddress.getLocalHost(); return request.getScheme() + "://" + inet.getHostAddress() + ":" + request.getServerPort() + path + "/"; } /** * 发送激活邮件 * * @param user * @throws MessagingException * @throws IOException * @throws TemplateException */ public void sendTextMail(final UserT user) throws MessagingException, IOException, TemplateException { String emailcontent = "<a href='" + getBasePath() + "html/default/shop/useractivatescallback.html?uid=" + user.getUid() + "'>点击激活</a>"; final String htmlText = this.getCreateHtml().buildEmail(emailcontent); this.getTaskExecutor().execute(new Runnable() { public void run() { InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("email.properties"); Properties p = new Properties(); try { p.load(inputStream); } catch (IOException e1) { e1.printStackTrace(); } ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); JavaMailSender sender = (JavaMailSender) ctx.getBean("javamailsenderimpl"); MimeMessage msg = sender.createMimeMessage(); MimeMessageHelper helper = null; try { helper = new MimeMessageHelper(msg, false, "UTF-8"); } catch (MessagingException e1) { e1.printStackTrace(); } try { helper.setTo(user.getEmail()); helper.setFrom(p.getProperty("email.username")); helper.setSubject("ostocy会员激活邮件"); helper.setText(htmlText, true); } catch (MessagingException e) { e.printStackTrace(); } sender.send(msg); } }); } public String getVirtualinfo(List glist){ GoodsT gt=new GoodsT(); String mailcontent = ""; for(int i=0;i<glist.size();i++){ gt=this.getGoodsTService().findGoodsById(glist.get(i).toString()); mailcontent+=gt.getVirtualresults()+" "; } return mailcontent; } /** * 根据orderid查询到商品数据并发送邮件 * @param orderid */ @SuppressWarnings("unchecked") @Action(value="sendEmailVirtualMovieGoodsinfo") public void sendEmailVirtualMovieGoodsinfo(){ String orderid=""; final String email=this.getEmail(); if(Validate.StrNotNull(this.getOrderid())){ orderid=this.getOrderid().trim(); } List<CartT>list=this.getCartTService().findCartGoodsByOrderid(orderid); List glist=new ArrayList(); if(!list.isEmpty()){ for (Iterator it = list.iterator(); it.hasNext();) { CartT cart=(CartT)it.next(); if(!list.contains(cart.getGoodsid())){ glist.add(cart.getGoodsid()); } } } final String mailcontent=getVirtualinfo(glist); this.getTaskExecutor().execute(new Runnable() { public void run() { InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("email.properties"); Properties p = new Properties(); try { p.load(inputStream); } catch (IOException e1) { e1.printStackTrace(); } ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); JavaMailSender sender = (JavaMailSender) ctx.getBean("javamailsenderimpl"); MimeMessage msg = sender.createMimeMessage(); MimeMessageHelper helper = null; try { helper = new MimeMessageHelper(msg, false, "UTF-8"); } catch (MessagingException e1) { e1.printStackTrace(); } try { helper.setTo(email); helper.setFrom(p.getProperty("email.username")); helper.setSubject("ostocy会员激活邮件"); helper.setText(mailcontent, true); } catch (MessagingException e) { e.printStackTrace(); } sender.send(msg); } }); } }