📜  Struts 2-发送电子邮件(1)

📅  最后修改于: 2023-12-03 15:05:23.478000             🧑  作者: Mango

Struts 2-发送电子邮件

在web开发中,经常需要发送电子邮件。Struts 2框架提供了方便的方法来发送电子邮件。在本文中,我们将学习如何使用Struts 2框架来发送电子邮件。

1. 配置邮件服务器

在Struts 2中发送电子邮件需要配置一个邮件服务器。我们可以使用JavaMail API发送邮件。在配置邮件服务器之前,需要先下载JavaMail API Jar文件。下载链接为:https://javaee.github.io/javamail/

下载后,将该Jar文件添加到项目中。然后,我们来看一下如何配置邮件服务器。

  • 新建一个properties文件,例如mail.properties
  • 在该文件中添加以下配置信息
mail.smtp.host=smtp.gmail.com
mail.smtp.auth=true
mail.smtp.port=587

mail.user=<email_address>
mail.password=<password>

这里配置的是Gmail SMTP服务器。我们可以根据需要更改SMTP服务器的地址和端口号。

2. 创建一个Action

接下来,我们需要在我们的Struts 2应用中创建一个Action。在这个Action中,我们将编写代码来发送电子邮件。首先在action类中添加以下代码

public class EmailAction extends ActionSupport {

   private String recipient;
   private String subject;
   private String message;
   
   public String execute() throws Exception {
      System.out.println("======> Starting EmailAction.execute()");

      Properties properties = new Properties();
      properties.load(getClass().getResourceAsStream("mail.properties"));
      
      final String username = properties.getProperty("mail.user");
      final String password = properties.getProperty("mail.password");
      String host = properties.getProperty("mail.smtp.host");
      int port = Integer.parseInt(properties.getProperty("mail.smtp.port"));

      Session session = Session.getInstance(properties,
         new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
               return new PasswordAuthentication(username, password);
            }
         });

      Message email = new MimeMessage(session);
      email.setFrom(new InternetAddress(username));
      email.setRecipients(Message.RecipientType.TO,
         InternetAddress.parse(recipient));
      email.setSubject(subject);
      email.setText(message);

      Transport.send(email);
      System.out.println("======> Successfully sent email to:" + recipient);

      return SUCCESS;
   }

   // getters and setters
}

在此文件中,我们首先读取mail.properties文件中的配置信息,然后根据该配置信息创建邮件会话。然后我们创建一个MimeMessage对象,设置发送方,接收方,主题和消息文本。最后,通过调用Transport.send()方法来发送电子邮件。如果邮箱成功发送,将打印一条成功消息到控制台。

3. 编写JSP页面

现在,我们开始编写JSP页面,以显示一个表单,以便用户填写电子邮件的详细信息。JSP页面的内容如下:

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
   <title>Send Email</title>
</head>
<body>
   <s:form action="email" method="POST">
      <s:textfield name="recipient" label="To"/>
      <s:textfield name="subject" label="Subject"/>
      <s:textarea name="message" label="Message"/>
      <s:submit value="Send"/>
   </s:form>
</body>
</html>

此页面包含表单元素,用于输入收件人,主题和消息。当用户单击“发送”按钮时,该表单将提交到Action类中。

4. 配置Struts.xml

最后,我们需要在struts.xml文件中添加以下配置代码:

<action name="email"
      class="com.example.EmailAction"
      method="execute">
      <result name="success">email_success.jsp</result>
</action>

这个配置代码将指定一个Action类的名称,它定义了如何处理电子邮件表单的提交。如果发送成功,将跳转到一个名为email_success.jsp的页面,该页面可以通过在Action类中的execute()方法中返回SUCCESS值而显示。

总结

在本文中,我们介绍了如何使用Struts 2框架来发送电子邮件。我们首先配置了邮件服务器,然后创建了一个Struts 2 Action类来处理电子邮件表单的提交,并在JSP页面中提供了表单元素。最后,我们在struts.xml文件中配置了Action类的名称和相关信息。

完整代码可在我的GitHub页面上找到:https://github.com/lingarry/Struts2-Email-Example