实现邮件发送有两种形式
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
以上有很多时参考网上实现,仅供参考
分享到:
相关推荐
spring框架使用
用法查看 https://blog.csdn.net/qq_32371887/article/details/72821291 注意配置的邮箱不要被标记为垃圾邮件
基于spring mvc 框架,用freemarker创建邮件模板,包括详细邮件发送功能的spring配置和实现代码
java实现邮件发送html
ssh框架搭建,采用最新struts2、spring3、hibernate4搭建环境,导入数据库,直接能运行(界面不是很完善),项目中采用velocity模版实现发送邮件功能、实现利用验证码登陆、文件上传下载功能及报表导出功能
Velocity模板邮件发送例子(Spring框架)(可通用,支持多扩展)Velocity模板邮件发送例子(Spring框架)(可通用,支持多扩展)
spring-boot微服务框架,定时从数据库读取数据生成报表,并发送给boss
Spring编写发送邮件程序,通过spring框架编写的邮件发送,代码简单实用。
Spring邮件发送系统:基于Java构建,包含67个文件,包括60个XML配置文件、3个Java类文件、2个.gitignore文件、1个Idea项目文件...该项目是一个Spring email的最简单入门案例,用于演示如何使用Spring框架发送电子邮件。
Spring框架整合Quartz,使用javamail定时发送邮件
主要为大家详细介绍了Spring框架JavaMailSender发送邮件工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Java的Spring框架中实现发送邮件功能的核心代码示例,包括发送带附件的邮件功能的实现,需要的朋友可以参考下
java发邮件
RMI Hessian、 Burlap Http Invoker <br>邮件 对于邮件发送服务的支援是由Spring的 org.springframework.mail.MailSender介面所定义,它有两个实作类别, org.springframework.mail.cos....
NULL 博文链接:https://panyongzheng.iteye.com/blog/1550427
NULL 博文链接:https://liu346435400.iteye.com/blog/1281022
Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。这篇文章主要介绍了使用spring框架中的组件发送邮件,需要的朋友可以参考下
本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱 先要了解一下SMTP协议和SSL加密 SMTP:称为简单邮件传输协议(Simple Mail Transfer ...
主要介绍了java使用spring实现发送mail的方法,涉及java基于spring框架发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
Google Guice 这个高效的与Spring类似的依赖注入框架;...使用 MailServiceTest 向邮件表中新增一条邮件记录,轮询系统会自动将邮件发送出去,有了邮箱,发送推广广告,你懂得,记得改成你的邮件服务器!