1 <?xml version="1.0" encoding="utf-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 6 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 7 <!-- 注意:这里的参数(如用户名、密码)都是针对邮件发送者的 --> 8 <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 9 <property name="defaultEncoding" value="UTF-8" /> 10 <!-- 11 网易的SMTP服务器名和端口号: 12 网易邮箱 SMTP服务器 SMTP端口 POP3服务器 POP3端口 13 @126.com smtp.126.com 25 pop3.126.com 110 14 @163.com smtp.163.com 25 pop3.163.com 110 15 @yeah.net smtp.yeah.net 25 pop3.yeah.net 110 16 --> 17 <property name="host" value="smtp.163.com"/> 18 <property name="port" value="25"/> 19 <property name="username" value="basketball402@163.com"/> 20 <property name="password" value="xxl311XXLONG"/> 21 <property name="javaMailProperties"> 22 <props> 23 <prop key="mail.smtp.auth">true</prop> 24 <prop key="mail.smtp.timeout">0</prop> 25 </props> 26 </property> 27 </bean> 28 29 <bean id="sendMail" class="com.xxlong.javamail.SendMail"> 30 <property name="mailSender" ref="mailSender"></property> 31 <property name="velocityEngine" ref="velocityEngine" /> 32 </bean> 33 34 <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 35 <property name="velocityProperties"> 36 <props> 37 <prop key="resource.loader">class</prop> 38 <prop key="class.resource.loader.class"> 39 org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 40 </prop> 41 <prop key="velocimacro.library"></prop> 42 </props> 43 </property> 44 </bean> 45 </beans>
applicationContext-mail.xml
sendMail.java
1 package com.xxlong.javamail; 2 3 import java.io.File; 4 import java.util.HashMap; 5 import java.util.Map; 6 import java.util.Properties; 7 8 import javax.mail.internet.MimeMessage; 9 import javax.mail.internet.MimeUtility; 10 11 import org.apache.velocity.app.VelocityEngine; 12 import org.springframework.mail.SimpleMailMessage; 13 import org.springframework.mail.javamail.JavaMailSender; 14 import org.springframework.mail.javamail.MimeMessageHelper; 15 import org.springframework.ui.velocity.VelocityEngineUtils; 16 17 public class SendMail { 18 19 private JavaMailSender mailSender; 20 public void setMailSender(JavaMailSender mailSender) { 21 this.mailSender = mailSender; 22 } 23 24 private VelocityEngine velocityEngine; 25 public void setVelocityEngine(VelocityEngine velocityEngine) { 26 this.velocityEngine = velocityEngine; 27 } 28 29 30 31 //文本邮件 32 public void sendTextMail() { 33 //<span style="color: #ff0000;">注意SimpleMailMessage只能用来发送text格式的邮件</span> 34 SimpleMailMessage mail = new SimpleMailMessage(); 35 try { 36 mail.setTo("1044489906@qq.com");//接受者 37 mail.setFrom("basketball402@163.com");//发送者,这里还可以另起Email别名,不用和xml里的username一致 38 mail.setSubject("spring mail test!");//主题 39 mail.setText("springMail的简单发送测试");//邮件内容 40 mailSender.send(mail); 41 System.out.println("*******************send Success!************************"); 42 } catch (Exception e) { 43 e.printStackTrace(); 44 } 45 } 46 47 48 49 //html邮件 50 public void sendHtmlMail() { 51 // JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 52 //MimeMessage mailMessage = senderImpl.createMimeMessage(); 53 MimeMessage mailMessage = mailSender.createMimeMessage(); 54 try { 55 //设置utf-8或GBK编码,否则邮件会有乱码 56 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); 57 messageHelper.setTo("1044489906@qq.com");//接受者 58 messageHelper.setFrom("basketball402@163.com");//发送者 59 messageHelper.setSubject("html test");//主题 60 //邮件内容,注意加参数true,表示启用html格式 61 messageHelper.setText("<html><head></head><body><h1>hello!!您注册成功了</h1></body></html>",true); 62 /* senderImpl.setUsername("username") ; // 根据自己的情况,设置username 63 senderImpl.setPassword("password") ; // 根据自己的情况, 设置password 64 Properties prop = new Properties() ; 65 prop.put("mail.smtp.auth", "true") ; // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确 66 prop.put("mail.smtp.timeout", "25000") ; 67 senderImpl.setJavaMailProperties(prop); */ 68 mailSender.send(mailMessage); 69 System.out.println("*******************send Success!************************"); 70 } catch (Exception e) { 71 e.printStackTrace(); 72 } 73 } 74 75 //html邮件带附件 76 public void sendHtmlAttachMail() { 77 /* JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 78 MimeMessage mailMessage = senderImpl.createMimeMessage(); */ 79 MimeMessage mailMessage = mailSender.createMimeMessage(); 80 try { 81 //设置utf-8或GBK编码,否则邮件会有乱码 82 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); 83 messageHelper.setTo("1044489906@qq.com");//接受者 84 messageHelper.setFrom("basketball402@163.com");//发送者 85 messageHelper.setSubject("html带附件test");//主题 86 //邮件内容,注意加参数true 87 //messageHelper.setText("<html><head></head><body><h1>恭喜您注册成功了!</h1></body></html>",true); 88 File myPicture = new File("/home/xxlong/桌面/xiaomao2.jpg"); 89 90 //如果是html代码,boolean 的参数用该为true 91 /* messageHelper.setText("<html><head><meta http-equiv="+"Content-Type"+" content="+"text/html; charset=gb2312"+ 92 "></head><body><h1>恭喜您 注册成功了!去登陆<a href=''http://localhost:8080/imagemark/login.jsp>http://localhost:8080/imagemark/login.jsp"+ "</a>查看<br><img src='cid:myPicture'></body></html>", true); */ 93 messageHelper.setText("<html><head><meta http-equiv="+"Content-Type"+" content="+"text/html; charset=gb2312"+ 94 "></head><body><h1>恭喜您 注册成功了!</body></html>", true); 95 96 //添加图片至HTML 代码中 97 //messageHelper.addInline("myPicture", myPicture); 98 99 //附件内容 100 // messageHelper.addInline("a", new File("/home/xxlong/桌面/xiaomao2.jpg")); 101 //messageHelper.addInline("b", new File("/home/xxlong/ccccc/makefile")); 102 File file=new File("/home/xxlong/py/python.rar"); 103 // 这里的方法调用和插入图片是不同的,使用MimeUtility.encodeWord()来解决附件名称的中文问题 104 messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file); 105 mailSender.send(mailMessage); 106 System.out.println("*******************send Success!************************"); 107 } catch (Exception e) { 108 e.printStackTrace(); 109 } 110 } 111 112 113 114 //带模板的邮件 115 public void sendModelMail(){ 116 // JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 117 //MimeMessage mailMessage = senderImpl.createMimeMessage(); 118 MimeMessage mailMessage = mailSender.createMimeMessage(); 119 try { 120 //设置utf-8或GBK编码,否则邮件会有乱码 121 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); 122 messageHelper.setTo("1044489906@qq.com");//接受者 123 messageHelper.setFrom("basketball402@163.com");//发送者 124 messageHelper.setSubject("html mode test");//主题 125 // 声明Map对象,并填入用来填充模板文件的键值对 126 Map<String, String> model = new HashMap<String, String>(); 127 model.put("username", "merchant1"); 128 model.put("url", "http://222.214.218.140:90/imagemark/login.jsp"); 129 // Spring提供的VelocityEngineUtils将模板进行数据填充,并转换成普通的String对象 130 String emailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "velocity/register.vm","utf-8", model); 131 //邮件内容,注意加参数true,表示启用html格式 132 messageHelper.setText(emailText, true); 133 mailSender.send(mailMessage); 134 System.out.println("*******************send mode mail Success!************************"); 135 } catch (Exception e) { 136 e.printStackTrace(); 137 } 138 139 } 140 }
Test.java
package com.xxlong.javamail; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { private static ApplicationContext ctx = null; public static void main(String[] args) { //获取上下文 ctx = new ClassPathXmlApplicationContext("applicationContext-mail.xml"); //获取JavaMailSender bean SendMail sendMail= (SendMail) ctx.getBean("sendMail"); //sendMail.sendTextMail(); //sendMail.sendHtmlMail(); sendMail.sendHtmlAttachMail();
sendMail.sendModelMail()
} }
pom.xml
1 <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/xsd/maven-4.0.0.xsd"> 2 <modelVersion>4.0.0</modelVersion> 3 <groupId>com.xxlong</groupId> 4 <artifactId>javamail</artifactId> 5 <version>0.0.1-SNAPSHOT</version> 6 <build/> 7 8 <packaging>jar</packaging> 9 <name>spring-mail-example</name> 10 <url>http://maven.apache.org</url> 11 <properties> 12 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 13 </properties> 14 15 <dependencies> 16 17 <dependency> 18 <groupId>javax.servlet</groupId> 19 <artifactId>servlet-api</artifactId> 20 <version>3.0-alpha-1</version> 21 </dependency> 22 23 <!-- Spring framework --> 24 <dependency> 25 <groupId>org.springframework</groupId> 26 <artifactId>spring</artifactId> 27 <version>2.5.6</version> 28 </dependency> 29 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-context-support</artifactId> 33 <version>3.1.1.RELEASE</version> 34 </dependency> 35 36 <!-- Javamail API --> 37 <dependency> 38 <groupId>javax.mail</groupId> 39 <artifactId>mail</artifactId> 40 <version>1.4.4</version> 41 </dependency> 42 43 <dependency> 44 <groupId>org.apache.velocity</groupId> 45 <artifactId>velocity</artifactId> 46 <version>1.7</version> 47 </dependency> 48 <dependency> 49 <groupId>org.apache.velocity</groupId> 50 <artifactId>velocity-tools</artifactId> 51 <version>2.0</version> 52 </dependency> 53 54 55 <dependency> 56 <groupId>junit</groupId> 57 <artifactId>junit</artifactId> 58 <version>3.8.1</version> 59 <scope>test</scope> 60 </dependency> 61 </dependencies> 62 </project>
src/main/resources下新建velocity文件夹,创建register.vm
1 <html> 2 <head> 3 </head> 4 <body> 5 亲爱的${username} :<br> 6 欢迎加入imagemark! 当您收到这封信的时候,您已经可以正常登录了。<br> <br> 7 请点击链接登录首页:${url} 如果点击以上链接没有反应,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入。<br> <br> 8 如果您并未发过请求,则可能是因为其他用户在注册的时候误输入了您的电子邮件地址而使您收到这份邮件,那么您可以放心的忽略此邮件,无需进一步采取任何操作<br> 9 </body> 10 </html>