📅  最后修改于: 2023-12-03 15:05:23.478000             🧑  作者: Mango
在web开发中,经常需要发送电子邮件。Struts 2框架提供了方便的方法来发送电子邮件。在本文中,我们将学习如何使用Struts 2框架来发送电子邮件。
在Struts 2中发送电子邮件需要配置一个邮件服务器。我们可以使用JavaMail API发送邮件。在配置邮件服务器之前,需要先下载JavaMail API Jar文件。下载链接为:https://javaee.github.io/javamail/
下载后,将该Jar文件添加到项目中。然后,我们来看一下如何配置邮件服务器。
mail.smtp.host=smtp.gmail.com
mail.smtp.auth=true
mail.smtp.port=587
mail.user=<email_address>
mail.password=<password>
这里配置的是Gmail SMTP服务器。我们可以根据需要更改SMTP服务器的地址和端口号。
接下来,我们需要在我们的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()方法来发送电子邮件。如果邮箱成功发送,将打印一条成功消息到控制台。
现在,我们开始编写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类中。
最后,我们需要在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