struts2集成javamail发邮件示例详解


在Struts2中集成JavaMail来发送邮件是一个常见的需求,主要用于实现如用户注册验证、系统通知等功能。下面我将提供一个简化的示例来说明如何在Struts2应用中集成JavaMail来发送邮件。

首先,确保你的项目中已经包含了Struts2和JavaMail的依赖。对于Maven项目,可以在`pom.xml`中添加如下依赖:


<!-- Struts2 依赖 -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>你的Struts2版本号</version>
</dependency>

<!-- JavaMail 依赖 -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>你的JavaMail API版本号</version>
</dependency>
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>你的JavaMail实现版本号</version>
</dependency>

接下来,你需要配置Struts2的action来处理发送邮件的请求,以及编写JavaMail相关的代码来实际发送邮件。

这里是一个简单的Struts2 Action示例,用于发送邮件:


import com.opensymphony.xwork2.ActionSupport;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class SendEmailAction extends ActionSupport {

    // 邮件发送者邮箱
    private String from;
    // 邮件接收者邮箱
    private String to;
    // 邮件主题
    private String subject;
    // 邮件内容
    private String content;

    // 省略getter和setter方法

    @Override
    public String execute() throws Exception {
        Properties props = new Properties();
        // 配置SMTP服务器
        props.put("mail.smtp.host", "smtp.example.com");
        props.put("mail.smtp.port", "587"); // 根据实际情况修改端口
        props.put("mail.smtp.auth", "true");

        // 启用SSL
        props.put("mail.smtp.starttls.enable", "true");

        // 获取Session对象
        Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    // 这里填写SMTP服务器的用户名和密码
                    return new PasswordAuthentication("yourEmail@example.com", "yourPassword");
                }
            });

        try {
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            // 设置 From: 头部头字段
            message.setFrom(new InternetAddress(from));

            // 设置 To: 头部头字段
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            // 设置 Subject: 头部头字段
            message.setSubject(subject);

            // 设置消息体
            message.setText(content);

            // 发送消息
            Transport.send(message);

            return SUCCESS;

        } catch (MessagingException mex) {
            mex.printStackTrace();
            return ERROR;
        }
    }
}

注意:

1. 替换`smtp.example.com`、`587`、`yourEmail@example.com`和`yourPassword`为你的SMTP服务器地址、端口、邮箱账号和密码。

2. 根据需要调整`from`、`to`、`subject`和`content`字段的值,这些值可以通过Struts2的表单提交获得。

3. 确保你的SMTP服务器支持SSL/TLS加密(本例启用了`starttls`)。

最后,你需要在Struts2的配置文件中(如`struts.xml`)配置这个Action,以便通过URL访问它来发送邮件。

由于篇幅限制,这里不展示`struts.xml`的配置内容,但基本步骤包括定义一个action的name、class和result映射。

希望这个示例能帮助你理解如何在Struts2中集成JavaMail来发送邮件。如果有更具体的需求或问题,请继续提问。