tomcat 启动和停止时发送邮件

1.使用maven下载jar
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.boce</groupId>
<artifactId>boce_web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>boce_web Maven Webapp</name>
<url>http://maven.apache.org</url>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.2.18.RELEASE</spring.version>
<slf4j-api.version>1.7.5</slf4j-api.version>
<logback.version>1.0.13</logback.version>
</properties>

<dependencies>


<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>

<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>




<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>


</dependencies>
<build>
<finalName>boce_web</finalName>

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>${project.build.sourceEncoding}</encoding>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
</configuration>
</plugin>
</plugins>
</build>

</project>


2.编写发送邮件代码:

package com.boce.server.tools;

import java.util.Properties;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.util.StringUtils;

public class SendMailTools {

static Logger logger = LoggerFactory.getLogger(SendMailTools.class);

private JavaMailSender javaMailSender;

private SimpleMailMessage simpleMailMessage;

public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
this.simpleMailMessage = simpleMailMessage;
}

public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}

/**
* 使用spring 发送文本email
*
* @return
*/
public boolean SpringSendMailText(MailInfo mailInfo) {
if(!emailValidate(mailInfo)){
return false;
}
simpleMailMessage.setSubject(mailInfo.getSubject());
simpleMailMessage.setText(mailInfo.getText());

javaMailSender.send(simpleMailMessage);
logger.info("发送邮件成功");

return true;
}

/**
* 使用spring 发送文本email
*
* @return
*/
public boolean SpringSendMailHtml(MailInfo mailInfo) {
// 建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);

if(!emailAddressValidate(mailInfo) || !emailAddressValidate(mailInfo)){
return false;
}

try {
messageHelper.setTo(mailInfo.getMailto());
messageHelper.setFrom(mailInfo.getMailfrom());

messageHelper.setSubject(mailInfo.getSubject());
messageHelper.setText(mailInfo.getText(), true);

javaMailSender.send(mailMessage);
} catch (MessagingException e) {
StringBuffer sb = new StringBuffer(64);
sb.append("to:").append(mailInfo.getMailto());
sb.append(";from=").append(mailInfo.getMailfrom());
logger.info(sb.toString(), e);

return false;
}

logger.info("发送邮件成功");

return true;
}

/**
* 邮件标题和内容验证
* @param mailInfo
* @return
*/
private boolean emailValidate(MailInfo mailInfo){
if (null == mailInfo) {
logger.error("MailInfo is null");
return false;
}

if (StringUtils.isEmpty(mailInfo.getSubject())) {
logger.error("Subject is null,邮件标题不可以为空");

return false;
}

if (StringUtils.isEmpty(mailInfo.getText())) {
logger.error("Subject is null,邮件内容不可以为空");
return false;
}

return true;
}

/**
* 验证邮件发送地址和接收地址
* @param mailInfo
* @return
*/
private boolean emailAddressValidate(MailInfo mailInfo){
if (null == mailInfo) {
logger.error("MailInfo is null");
return false;
}

if (StringUtils.isEmpty(mailInfo.getMailto())) {
logger.error("mailto is null,收件人不可以为空");
return false;
}

if (StringUtils.isEmpty(mailInfo.getMailfrom())) {
logger.error("mailto is null,发件人不可以为空");
return false;
}
return true;
}


///////////////////////////////////////////////////////////////////////////////////////////////////

/**
* 实现类发送简单email
*
* @param mailInfo
* @return
*/
public boolean sendSinaEmail(MailInfo mailInfo) {

JavaMailSenderImpl mailSend = new JavaMailSenderImpl();
mailSend.setHost(mailInfo.getHost());
mailSend.setPort(mailInfo.getPort());
mailSend.setUsername(mailInfo.getUserName());
mailSend.setPassword(mailInfo.getPassword());

Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.transport.protocol", "smtp");
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.debug", "false");
javaMailProperties.setProperty("mail.smtp.timeout", "8000");
mailSend.setJavaMailProperties(javaMailProperties);

SimpleMailMessage simpleMessage = new SimpleMailMessage();
simpleMessage.setTo(mailInfo.getMailto());
simpleMessage.setFrom(mailInfo.getMailfrom());
simpleMessage.setSubject(mailInfo.getSubject());
simpleMessage.setText(mailInfo.getText());
try{
mailSend.send(simpleMessage);
}catch(MailException e){
StringBuffer sb = new StringBuffer(64);
sb.append("to:").append(mailInfo.getMailto());
sb.append(";from=").append(mailInfo.getMailfrom());
sb.append(";port=").append(mailInfo.getPort());
logger.error(sb.toString(), e);

return false;
}

logger.info("发送邮件成功");

return true;

}


/**
* 发送email包含html和text
*
* @param mailInfo
* @return
*/
public boolean sendEmailHtml(MailInfo mailInfo) {

JavaMailSenderImpl mailSend = new JavaMailSenderImpl();
mailSend.setHost(mailInfo.getHost());
mailSend.setPort(mailInfo.getPort());
mailSend.setUsername(mailInfo.getUserName());
mailSend.setPassword(mailInfo.getPassword());

Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.transport.protocol", "smtp");
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.debug", "false");
javaMailProperties.setProperty("mail.smtp.timeout", "8000");
mailSend.setJavaMailProperties(javaMailProperties);

// SimpleMailMessage simpleMessage = new SimpleMailMessage();
// simpleMessage.setTo(mailInfo.getMailto());
// simpleMessage.setFrom(mailInfo.getMailfrom());
// simpleMessage.setSubject(mailInfo.getSubject());
// simpleMessage.setText(mailInfo.getText());

MimeMessage mimeMessage = mailSend.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);

try{
messageHelper.setTo(mailInfo.getMailto());
messageHelper.setFrom(mailInfo.getMailfrom());

messageHelper.setSubject(mailInfo.getSubject());
messageHelper.setText(mailInfo.getText(), true);


mailSend.send(mimeMessage);
}catch(Exception e){
StringBuffer sb = new StringBuffer(64);
sb.append("to:").append(mailInfo.getMailto());
sb.append(";from=").append(mailInfo.getMailfrom());
sb.append(";port=").append(mailInfo.getPort());
logger.error(sb.toString(), e);

return false;
}

logger.info("发送邮件成功");

return true;

}

public static void main(String[] args) {
SendMailTools tools = new SendMailTools();
//tools.sinaSendMail();
MailInfo mailInfo = new MailInfo();
mailInfo.setHost("smtp.sina.com");
mailInfo.setMailfrom("[email protected]");
mailInfo.setMailto("[email protected]");
mailInfo.setUserName("gjp");
mailInfo.setPassword("gjp");

mailInfo.setSubject("tomcat 启动发送邮件2");
mailInfo.setText("<html><header>test</header><body><a href='http://www.baidu.com'>baidu</a></body></html>");
// tools.sendSinaEmail(mailInfo);

tools.sendEmailHtml(mailInfo);

// // 方法二 使用spring3
// ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
// SendMailTools sendMailTools = (SendMailTools) app.getBean("sendMailTools");
// // sendMailTools.StringSendMailText();
//
// // sendMailTools.StringSendMailHtml();
}

}



3.实现ServletContextListener 接口
package com.boce.server.listener;

import java.util.Enumeration;
import java.util.Properties;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.boce.server.tools.MailInfo;
import com.boce.server.tools.SendMailTools;
/**
* @author gjp
*
*/
public class ServerStopListener implements ServletContextListener{

static Logger log = LoggerFactory.getLogger(ServerStopListener.class);
@Override
public void contextDestroyed(ServletContextEvent event) {
log.info("====================================stop.............");
Enumeration<String> e = event.getServletContext().getAttributeNames();
while(e.hasMoreElements()){
System.out.println("name:"+e.nextElement());
}

MailInfo mailInfo = init();
mailInfo.setSubject("tomcat 关闭发送邮件");
mailInfo.setText("tomcat停止发送通知邮件邮件 ----stop.....");

sendMail(mailInfo);

}

@Override
public void contextInitialized(ServletContextEvent event) {
log.info("############################start#######################");

MailInfo mailInfo = init();
mailInfo.setSubject("tomcat 启动发送邮件");
mailInfo.setText("<html><header>test</header><body><a href='http://www.baidu.com'>baidu</a></body></html>");


sendMail(mailInfo);
}

//初始化邮件配置
private MailInfo init(){
MailInfo mailInfo = new MailInfo();
mailInfo.setHost("smtp.sina.com");
mailInfo.setMailfrom("[email protected]");
mailInfo.setMailto("[email protected]");
mailInfo.setUserName("gjp");
mailInfo.setPassword("g");

mailInfo.setSubject("tomcat 启动发送邮件");
mailInfo.setText("tomcat启动发送邮件 ----start......");

return mailInfo;
}


//发送邮件
public void sendMail(MailInfo mailInfo){
SendMailTools tools = new SendMailTools();
tools.sendEmailHtml(mailInfo);
}

}


代码在附件中:

猜你喜欢

转载自gjp014.iteye.com/blog/2389254