mail.jar (JavaMail API 1.4.4+)activation.jar (JDK 1.6+ 已內置,舊版需引入)WEB-INF/lib。public class Emailer extends ActionSupport {
private String from, password, to, subject, body;
// getter/setter 省略
static Properties props = new Properties();
static {
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
}
public String execute() {
try {
Session session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, password);
}
});
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
msg.setSubject(subject);
msg.setText(body);
Transport.send(msg);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
<form action="emailer" method="post">
From: <input name="from"/><br/>
Password: <input type="password" name="password"/><br/>
To: <input name="to"/><br/>
Subject: <input name="subject"/><br/>
Body: <input name="body"/><br/>
<input type="submit" value="Send Email"/>
</form>
<!-- success -->Your email to <s:property value="to"/> was sent successfully.
<!-- error -->There is a problem sending your email to <s:property value="to"/>.
<action name="emailer" class="com.yiibai.struts2.Emailer" method="execute">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"/>
<property name="username" value="your@gmail.com"/>
<property name="password" value="yourpass"/>
<property name="port" value="465"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
</bean>
<bean id="sendMailAction" class="cn.com.action.SendMailAction" singleton="false">
<property name="mailSender" ref="mailSender"/>
</bean>
public class SendMailAction extends ActionSupport {
private JavaMailSenderImpl mailSender;
public void setMailSender(JavaMailSenderImpl mailSender) { this.mailSender = mailSender; }
public void sendMail() {
// 1. 簡單郵件
SimpleMailMessage msg = new SimpleMailMessage();
msg.setFrom("webadmin@163.com");
msg.setTo("user@163.com");
msg.setSubject("測試");
msg.setText("內容");
mailSender.send(msg);
// 2. HTML 郵件
MimeMessage mime = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mime, true, "UTF-8");
helper.setFrom("webadmin@163.com");
helper.setTo("user@163.com");
helper.setSubject("HTML 郵件");
helper.setText("<h1>Hello</h1>", true); // true=HTML
mailSender.send(mime);
// 3. 內嵌圖片
helper.setText("<img src='cid:logo'>", true);
FileSystemResource img = new FileSystemResource(new File("c:/logo.jpg"));
helper.addInline("logo", img);
mailSender.send(mime);
}
}
JavaMailSenderImpl 統一管理連接參數,Action 僅關注業務組裝。MimeMessageHelper 更便捷。通過 Struts2 + JavaMail(或 Spring Mail)可快速構建 Web 郵件發送功能,掌握核心 API 與整合模式,滿足註冊驗證、通知推營等常見場景。