开发手册 欢迎您!
软件开发者资料库

Struts 2 - 发送电子邮件

本章介绍如何使用Struts 2应用程序发送电子邮件.在本练习中,您需要从 JavaMail API 1.4.4 并放置 mail.jar 在WEB-INF\lib文件夹中的文件,然后继续按照创建操作,查看和配置文件的标准步骤进行操作.创建操作下一步是创建一个负责发送电子邮件的Action方法.让我

本章介绍如何使用Struts 2应用程序发送电子邮件.

在本练习中,您需要从 JavaMail API 1.4.4 并放置 mail.jar 在WEB-INF\lib文件夹中的文件,然后继续按照创建操作,查看和配置文件的标准步骤进行操作.

创建操作

下一步是创建一个负责发送电子邮件的Action方法.让我们创建一个名为 Emailer.java 的新类,其中包含以下内容.

package com.it1352.struts2 ; import java.util.Properties;import javax.mail.Message;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import com.opensymphony.xwork2.ActionSupport;public class Emailer extends ActionSupport {   private String from;   private String password;   private String to;   private String subject;   private String body;   static Properties properties = new Properties();   static {      properties.put("mail.smtp.host", "smtp.gmail.com");      properties.put("mail.smtp.socketFactory.port", "465");      properties.put("mail.smtp.socketFactory.class",         "javax.net.ssl.SSLSocketFactory");      properties.put("mail.smtp.auth", "true");      properties.put("mail.smtp.port", "465");   }   public String execute() {      String ret = SUCCESS;      try {         Session session = Session.getDefaultInstance(properties,              new javax.mail.Authenticator() {               protected PasswordAuthentication                getPasswordAuthentication() {                  return new                   PasswordAuthentication(from, password);               }            }         );         Message message = new MimeMessage(session);         message.setFrom(new InternetAddress(from));         message.setRecipients(Message.RecipientType.TO,             InternetAddress.parse(to));         message.setSubject(subject);         message.setText(body);         Transport.send(message);      } catch(Exception e) {         ret = ERROR;         e.printStackTrace();      }      return ret;   }   public String getFrom() {      return from;   }   public void setFrom(String from) {      this.from = from;   }   public String getPassword() {      return password;   }   public void setPassword(String password) {      this.password = password;   }   public String getTo() {      return to;   }   public void setTo(String to) {      this.to = to;   }   public String getSubject() {      return subject;   }   public void setSubject(String subject) {      this.subject = subject;   }   public String getBody() {      return body;   }   public void setBody(String body) {      this.body = body;   }   public static Properties getProperties() {      return properties;   }   public static void setProperties(Properties properties) {      Emailer.properties = properties;   }}

如上面的源代码所示, Emailer.java 具有的属性对应于下面给出的email.jsp页面中的表单属性.这些属性为 :

  • 来自 : 发件人的电子邮件地址.由于我们使用的是Google的SMTP,因此我们需要有效的gtalk ID

  • 密码 : 上述帐户的密码

  • : 谁将电子邮件发送给?

  • 主题 : 电子邮件的主题

  • Body : 实际的电子邮件消息

我们没有考虑上述字段的任何验证,验证将在下一章中添加.现在让我们看一下execute()方法. execute()方法使用javax Mail库使用提供的参数发送电子邮件.如果邮件发送成功,则操作返回SUCCESS,否则返回ERROR.

创建主页

让我们编写主页JSP文件 index.jsp ,用于收集上面提到的电子邮件相关信息 :

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"   pageEncoding = "ISO-8859-1"%><%@ taglib prefix = "s" uri = "/struts-tags"%>      Email Form               The form below uses Google's SMTP server.          So you need to enter a gmail username and password                           From
         
         Password
         
         To
         
         Subject
         
         Body
         
                  

创建视图

我们将使用将被调用的JSP文件 success.jsp 如果动作返回SUCCESS,但是如果从动作返回ERROR,我们将有另一个视图文件.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"   pageEncoding = "ISO-8859-1"%><%@ taglib prefix = "s" uri = "/struts-tags"%>         Email Success               Your email to  was sent successfully.   

如果从操作返回ERROR,以下将是视图文件 error.jsp .

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"   pageEncoding = "ISO-8859-1"%><%@ taglib prefix = "s" uri = "/struts-tags"%>         Email Error               There is a problem sending your email to .   

配置文件

现在让我们使用struts.xml配置文件将所有内容放在一起,如下所示 :

                     /success.jsp         /error.jsp         

以下是 web.xml 文件的内容 :

      Struts 2            index.jsp            struts2               org.apache.struts2.dispatcher.FilterDispatcher                  struts2      /*   

现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件.然后在Tomcat的webapps目录中部署此WAR.最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp .这将生成以下屏幕 :

电子邮件用户输入

输入所需信息,然后单击发送电子邮件按钮.如果一切顺利,那么你应该看到以下页面.

电子邮件成功