`

使用spring框架实现邮件发送

阅读更多
实现邮件发送有两种形式
1.不使用发送模版
实体类
public class SendMailContent {
private String toMail;
private String fromMail;
private String sendText;
private String subject;
public String getToMail() {
return toMail;
}
public void setToMail(String toMail) {
this.toMail = toMail;
}
public String getFromMail() {
return fromMail;
}
public void setFromMail(String fromMail) {
this.fromMail = fromMail;
}
public String getSendText() {
return sendText;
}
public void setSendText(String sendText) {
this.sendText = sendText;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}

}
接口
public interface SendMailIntrface {
public void sendMail(String sendContentType,SendMailContent Content);
}
接口实现
import java.util.Date;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;

public class SendMailImpl implements SendMailIntrface {

JavaMailSender mailSender;

public JavaMailSender getMailSender() {
return mailSender;
}

public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}

public void sendMail(String sendContentType, SendMailContent content) {
if (sendContentType.equals("TEXT")) {
SpringSendTextMail(mailSender, content);
}
}

private void SpringSendTextMail(JavaMailSender sender,
SendMailContent content) {
SimpleMailMessage mail = new SimpleMailMessage();
mail.setFrom(content.getFromMail());
mail.setTo(content.getToMail());
mail.setSubject(content.getSubject());
mail.setText(content.getSendText());
sender.send(mail);

System.out.println("成功发送文本文件!");
}

@SuppressWarnings("unused")
private void SpringSendTextMail(SendMailContent content) {

final String toMail = content.getToMail();
final String fromMail = content.getFromMail();
final String subject = content.getSubject();
final String text = content.getSendText();

MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage)
throws MessagingException {
mimeMessage.setRecipient(Message.RecipientType.TO,
new InternetAddress(toMail));

mimeMessage.setFrom(new InternetAddress(fromMail));
mimeMessage.setSubject(subject);
mimeMessage.setSentDate(new Date());
mimeMessage.setText(text);
}
};

try {
mailSender.send(preparator);
} catch (MailException ex) {
ex.printStackTrace();
// log it and go on
System.err.println(ex.getMessage());
}
}
}

Action
import com.opensymphony.xwork2.ActionSupport;

public class SendMailAction extends ActionSupport{

SendMailIntrface mailSend;

private String toMail;
private String fromMail;
private String sendText;
private String subject;

public String getFromMail() {
  return fromMail;
}

public void setFromMail(String fromMail) {
  this.fromMail = fromMail;
}

public String getSendText() {
  return sendText;
}

public void setSendText(String sendText) {
  this.sendText = sendText;
}

public String getSubject() {
  return subject;
}

public void setSubject(String subject) {
  this.subject = subject;
}

public String getToMail() {
  return toMail;
}

public void setToMail(String toMail) {
  this.toMail = toMail;
}

public String execute() {
  
  //mailSend.SpringSendMail("test@126.com");
 
  SendMailContent content  = new SendMailContent();
  content.setToMail(this.getToMail());
  content.setFromMail(this.getFromMail());
  content.setSubject(this.getSubject());
  content.setSendText(this.getSendText());
 
   mailSend.sendMail("TEXT",content);
  try {
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
  //返回成功  跳转到成功页面
    return "success";
}

public SendMailIntrface getMailSend() {
  return mailSend;
}

public void setMailSend(SendMailIntrface mailSend) {
  this.mailSend = mailSend;
}

}

spring配置文件
<!-- JavaMail 发送邮件配置 -->
<bean id="mailSenders"
  class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="smtp.163.com" />
  <property name="port" value="25" />
  <property name="username" value=" yonghuming" />
  <property name="password" value="mima" />
  <property name="javaMailProperties">
   <props>
    <!-- 如果不添加下面这个,将会出现553 authentication is required错误 -->
    <prop key="mail.smtp.auth">true</prop>
    <prop key="mail.smtp.timeout">25000</prop>
   </props>
  </property>
</bean>
<bean id="SendMailImpl"
  class="com.mail.SendMailImpl">
  <property name="mailSender">
   <ref bean="mailSenders" />
  </property>
</bean>
<bean id="mailAction" class="com.mail.SendMailAction">
<property name="mailSend"   ref="SendMailImpl"></property>
</bean>
action 配置文件
<action name="mailSend" class="mailAction">
       <result name="success">/pages/success.jsp</result>
</action>
测试页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
 
  <body>

  <s:form action="/mailSend.action">
 
   发送人<s:textfield name="fromMail"     value="lixiongjie2006@163.com"></s:textfield>
   收件人<s:textfield name="toMail" ></s:textfield>
    主题<s:textfield name="subject" ></s:textfield>
   
    发送内容<s:textarea cols="20" name="sendText" rows="5" >
    </s:textarea>
    <s:submit value="发送"></s:submit> 
     </s:form>
  </body>
</html>

2、使用模版
1、模版 notify-mail.ftl
欢迎加入! 
 
亲爱的${username} 
 
请点击链接完成注册: 
 
如果您的email程序不支持链接点击,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入****。 
 
您可以在***: 
 
查看最新的影视资料,查看各种相关消费产品,在这里交友,灌水……; 
 
希望您在**度过快乐的时光!
2、实现
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;


import freemarker.template.Configuration;
import freemarker.template.Template;

public class SpringMail {
private Configuration cfg = new Configuration();

public static void main(String[] args) throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
SpringMail springMail = new SpringMail();
springMail.sendMail(sender);

}

private void sendMail(JavaMailSender sender) throws Exception {
SimpleMailMessage mail = new SimpleMailMessage();
mail.setTo("50125670@qq.com"); // 接收人
mail.setFrom("lixiongjie2006@163.com"); // 发送人
mail.setSubject("test by amigo");
// 嵌入ftl模版
cfg.setClassForTemplateLoading(getClass(), "/mail");
Map root = new HashMap();
root.put("username", "lixiongjie"); // 模板变量
Template t = cfg.getTemplate("notify-mail.ftl");
StringWriter writer = new StringWriter();
t.process(root, writer);
// 把模版内容写入邮件中
mail.setText(writer.toString());
sender.send(mail);
System.out.println("邮件发送成功!");
}
}
3、spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">


<!-- JavaMail 发送邮件配置 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.163.com">
    </property>
    <property name="javaMailProperties">
      <props>
        <prop key="mail.smtp.auth">true</prop>
        <prop key="mail.smtp.timeout">25000</prop>
      </props>
    </property>
    <property name="username" value="用户名"/>
    <property name="password" value="密码"/>
  </bean>
</beans>
4、包结构
src
--mail
  notify-mail.ftl
--springmail
   SpringMail.java
applicationContext.xml
以上有很多时参考网上实现,仅供参考
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics