邮件服务,一直是J2EE框架的一个很重要的功能组件。那么如何进行搭建这个邮件服务的组件呢,特别是你使用了spring框架的时候,如何搭建邮件服务?这是我在下面要进行说明的。
使用spring搭建邮件服务,首先你需要对spring有一定的了解。这里,我不多说了
你找到spring的配置文件applicationContext.xml,在里面添加如下代码:
<import resource="classpath*:spring/**/*.xml" />
import进去的资源地址,是spring文件夹下面的所有以.xml结尾的文件
目录结构,你可以参考这个
下面,我们在resource/spring文件夹下面新建一个名称为:spring-mail.xml的配置文件,在里面添加如下代码
<bean id="mimeMessage" class="javax.mail.internet.MimeMessage" factory-bean="javaMailSender"
factory-method="createMimeMessage" />
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.sina.com" />
<property name="username" value="lpf_991@sina.com" />
<property name="password" value="yourpassword" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.host">smtp.sina.com</prop>
<prop key="mail.smtp.timeout">25000</prop>
<!-- <prop key="mail.smtp.port">25</prop>
<prop key="mail.smtp.socketFactory.port">25</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
-->
</props>
</property>
</bean>
<bean id="mailService" class="com.core.base.mail.service.impl.MailServiceImpl">
<property name="mailSender" ref="javaMailSender" />
<property name="mimeMessage" ref="mimeMessage" />
</bean>
注意,我使用的是新浪的邮箱,如果你不是使用新浪邮箱,请修改host的value
这个时候,spring的配置文件就写好了,接下来,我们看看具体的java代码如何实现吧
第一个java类:MailModel
package com.core.base.mail.model;
/**
* 邮件model
* @author Administrator
*
*/
public class MailModel {
private String fromAddress;//发送人地址1个
private String toAddresses;//接收人地址,可以为很多个,每个地址之间用";"分隔,比方说450065208@qq.com;lpf@sina.com
private String subject;//邮件主题
private String content;//邮件文本内容
private String[] attachFileNames;//附件
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getToAddresses() {
return toAddresses;
}
public void setToAddresses(String toAddresses) {
this.toAddresses = toAddresses;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public void setAttachFileNames(String[] attachFileNames) {
this.attachFileNames = attachFileNames;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
}
【这个类是邮件的model,包含了发送邮件的一些需要的属性】
第二个类:MailServiceImpl,这个类是继承的MailService接口。具体的模式我是跟ssh框架开发差不多的结构
package com.core.base.mail.service.impl;
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.Logger;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import com.core.base.mail.model.MailModel;
import com.core.base.mail.model.MailSenderInfo;
import com.core.base.mail.service.MailService;
import com.core.base.util.mail.MyAuthenticator;
public class MailServiceImpl implements MailService {
private JavaMailSender mailSender;
private MimeMessage mimeMessage;
private static Logger logger = Logger.getLogger(MailServiceImpl.class);
/**
* 发送html格式的,带附件的邮件
*/
@Override
public void sendAttachMail(MailModel mail) {
try {
MimeMessageHelper mailMessage = new MimeMessageHelper(
this.mimeMessage, true, "UTF-8");
mailMessage.setFrom(mail.getFromAddress());// 设置邮件消息的发送者
mailMessage.setSubject(mail.getSubject());// 设置邮件消息的主题
mailMessage.setSentDate(new Date());// 设置邮件消息发送的时间
mailMessage.setText(mail.getContent(), true); // 设置邮件正文,true表示以html的格式发送
String[] toAddresses = mail.getToAddresses().split(";");// 得到要发送的地址数组
for (int i = 0; i < toAddresses.length; i++) {
mailMessage.setTo(toAddresses[i]);
for (String fileName : mail.getAttachFileNames()) {
mailMessage.addAttachment(fileName, new File(fileName));
}
// 发送邮件
this.mailSender.send(this.mimeMessage);
logger.info("send mail ok=" + toAddresses[i]);
}
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
}
}
通过这个servieimpl,可以实现发现邮件
最后,我们来进行一个测试,这里还要进行一个说明,项目采用的是SSH框架
为了方便,我也不考虑那么多了,当用户进行登录系统的时候,给他发一封邮件通知他。
a.在UserAction里面,注入mailService。
package com.neweducation.user.action;
import com.core.base.action.BaseAction;
import com.core.base.mail.model.MailModel;
import com.core.base.mail.service.impl.MailServiceImpl;
import com.neweducation.user.model.UserModel;
import com.neweducation.user.service.UserService;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends BaseAction implements ModelDriven<UserModel> {
/**
*
*/
private static final long serialVersionUID = 1L;
private UserService userService;
private UserModel userModel = new UserModel();
private MailServiceImpl mailService;
/**
* 登录
*
* @return
*/
public String userLogin() {
UserModel user = userService.loginJudge(userModel.getUserName(),
userModel.getUserPass());
if (user != null) {
MailModel mm = new MailModel();
String fileNames[] = { "e:/xx.txt" };
mm.setAttachFileNames(fileNames);
mm.setFromAddress("lpf_991@sina.com");
mm.setToAddresses("450065208@qq.com;1009946392@qq.com");
mm.setContent("在做项目的过程中,我们经常会遇到这样的情况,需要进行单点登录<br/>,也就是说用户登录一个系统的同时也登录到其他系统。<br/> ");
mm.setSubject("这是一个spring整合javamail的测试");
mailService.sendAttachMail(mm);
return SUCCESS;
} else {
return INPUT;
}
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public UserService getUserService() {
return userService;
}
@Override
public UserModel getModel() {
return getUserModel();
}
public void setUserModel(UserModel userModel) {
this.userModel = userModel;
}
public UserModel getUserModel() {
return userModel;
}
public void setMailService(MailServiceImpl mailService) {
this.mailService = mailService;
}
public MailServiceImpl getMailService() {
return mailService;
}
}
b.修改spring-bean-user.xml配置文件的内容,以实现mailService的注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"
default-lazy-init="true" default-autowire="byName">
<bean id="UserAction" class="com.neweducation.user.action.UserAction"
scope="prototype">
<property name="userService" ref="userService" />
<property name="mailService" ref="mailService" />
</bean>
<bean id="userService" class="com.neweducation.user.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
<bean id="userDao" class="com.neweducation.user.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
自己写一个login。jsp,实现登录就可以了
- 大小: 15.1 KB
分享到:
相关推荐
Spring整合JavaMail发送qq邮件,极简单的例子。看完就会。。。
Spring Use JavaMail SendEmail(spring使用javamail发送邮件的例子)
本文描述如何使用James搭建具备一定邮件过滤、邮件操作功能的邮件服务器,以及使用Javamail实现对James服务器邮件的收发功能。
基于javamail1.4实现邮件发送,支持多收件人、抄送人、多附件等
JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件) 详见http://blog.csdn.net/lyisray/article/details/42002215
ssm 框架集成javamail 实现系统邮件发送功能
导入到Myeclipse 即可运行 测试使用的是QQ邮箱 在application.xml中配置的发送邮箱 要到邮箱中设置 POP3/SMTP服务为开。项目不部署到tomcat后启动服务,然后运行test.java 就发送了,。绝对可以发送
java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。...本邮件系统是本人为了熟悉java而开发的,肯定有很多不足之处,大家可以自行改正。嘿嘿 本压缩包包括源代码和可执行的压缩包!
NULL 博文链接:https://lihongtai.iteye.com/blog/2178787
在spring利用javamail,quartz定时发送邮件
javamail实现发送邮件的小例子,简单易会,好用记得给好评哦!
springboot集成javamail,实现发送邮件的功能,可以发送文本类型邮件,也可以发送html格式的邮件,其中整合了mysql、mybatis 具体集成步骤可以参考我的文章: https://www.jianshu.com/p/668d320b4981
基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统的设计(含源文件).pdf基于javaMail电子邮件系统...
好代码,好用,简单明了,记得导入相应jar包,对初学者非常有帮助
Spring框架整合Quartz,使用javamail定时发送邮件
使用JAVAMail代发邮件 资源源于不但搜索,自由源于不但努力
javamail实现的邮件发送功能,内含完整代码和jar包,邮件服务协议smtp,pop3,如使用imap等其他协议也可参考此代码调整或询问我