📅  最后修改于: 2020-11-11 05:00:30             🧑  作者: Mango
本章说明如何使用Struts 2应用程序发送电子邮件。
对于此练习,您需要从JavaMail API 1.4.4下载并安装mail.jar,并将mail.jar文件放置在WEB-INF \ lib文件夹中,然后继续执行创建操作,查看和配置的标准步骤。文件。
下一步是创建一个Action方法,该方法负责发送电子邮件。让我们用以下内容创建一个名为Emailer.java的新类。
package com.tutorialspoint.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
密码-上述帐户的密码
收件人-将电子邮件发送给谁?
主题-电子邮件的主题
机构-实际的电子邮件消息
我们尚未对上述字段进行任何验证,将在下一章中添加验证。现在让我们看一下execute()方法。 execute()方法使用javax Mail库使用提供的参数发送电子邮件。如果邮件发送成功,则操作返回SUCCESS,否则返回ERROR。
让我们编写主页JSP文件index.jsp ,该文件将用于收集上述电子邮件相关信息-
Email Form
The form below uses Google's SMTP server.
So you need to enter a gmail username and password
我们将使用JSP文件success.jsp ,如果操作返回SUCCESS则将调用该文件,但是如果操作返回错误,则将有另一个视图文件。
Email Success
Your email to was sent successfully.
如果操作返回错误,则下面是视图文件error.jsp 。
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文件。然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕-
输入所需的信息,然后单击发送电子邮件按钮。如果一切正常,那么您应该看到以下页面。