`

通过Spring Mail Api发送邮件

 
阅读更多

 

通过Spring Mail Api发送邮件

分类: spring javaSE 97人阅读 评论(0) 收藏 举报

目录(?)[+]


【引言】

使用Java Mail API来发送邮件也很容易实现,但是最近公司一个同事封装的邮件API实在让我无法接受,于是便打算改用Spring Mail API来发送邮件,顺便记录下这篇文章。

【Spring Mail API】

Spring Mail API都在org.springframework.mail及其子包org.springframework.mail.javamail中封装,且只提供了邮件发送的封装。
SimpleMailMessage: 对邮件的一个简单封装,只能用于表示一个纯文本的邮件,也不能包含附件等。
JavaMailSenderImpl: 邮件发送器,主要提供了邮件发送接口、透明创建Java Mail的MimeMessage、及邮件发送的配置(如:host/port/username/password...)。
MimeMailMessage、MimeMessageHelper:对MimeMessage进行了封装。Spring还提供了一个回调接口MimeMessagePreparator, 用于准备JavaMail的MIME信件
一下代码转载自:http://www.blogjava.net/tangzurui/archive/2008/12/08/244953.html

1.发送简单的文本邮件


 

[java] view plaincopy
  1. package net.xftzr.mail;  
  2.   
  3. import java.util.Properties;  
  4.   
  5. import org.springframework.mail.SimpleMailMessage;  
  6. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  7.   
  8. /** 
  9.  * 本类测试简单邮件 直接用邮件发送 
  10.  *  
  11.  * @author Administrator 
  12.  *  
  13.  */  
  14. public class SingleMailSend  
  15. {  
  16.     public static void main(String args[])  
  17.     {  
  18.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  19.         // 设定mail server  
  20.         senderImpl.setHost(" smtp.163.com ");  
  21.   
  22.         // 建立邮件消息  
  23.         SimpleMailMessage mailMessage = new SimpleMailMessage();  
  24.         // 设置收件人,寄件人 用数组发送多个邮件  
  25.         // String[] array = new String[] {"sun111@163.com","sun222@sohu.com"};  
  26.         // mailMessage.setTo(array);  
  27.         mailMessage.setTo(" toEmail@sina.com ");  
  28.         mailMessage.setFrom(" userName@163.com ");  
  29.         mailMessage.setSubject(" 测试简单文本邮件发送! ");  
  30.         mailMessage.setText(" 测试我的简单邮件发送机制!! ");  
  31.   
  32.         senderImpl.setUsername(" userName "); // 根据自己的情况,设置username  
  33.         senderImpl.setPassword(" password "); // 根据自己的情况, 设置password  
  34.   
  35.         Properties prop = new Properties();  
  36.         prop.put(" mail.smtp.auth "" true "); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确  
  37.         prop.put(" mail.smtp.timeout "" 25000 ");  
  38.         senderImpl.setJavaMailProperties(prop);  
  39.         // 发送邮件  
  40.         senderImpl.send(mailMessage);  
  41.   
  42.         System.out.println(" 邮件发送成功.. ");  
  43.     }  
  44. }  


 

 

2.发送简单的html邮件

org.springframework.mail.javamail.MimeMessageHelper是处理JavaMail邮件常用的顺手组件之一。它可以让你摆脱繁复的javax.mail.internetAPI类

[java] view plaincopy
  1. package net.xftzr.mail;  
  2.   
  3. import java.util.Properties;  
  4.   
  5. import javax.mail.internet.MimeMessage;  
  6. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  7. import org.springframework.mail.javamail.MimeMessageHelper;  
  8.   
  9. /** 
  10.  * 本类测试html邮件 
  11.  *  
  12.  * @author sunny 
  13.  *  
  14.  */  
  15. public class HTMLMailDemo  
  16. {  
  17.     /** 
  18.      * @param args 
  19.      */  
  20.     public static void main(String[] args) throws Exception  
  21.     {  
  22.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  23.   
  24.         // 设定mail server  
  25.         senderImpl.setHost("smtp.163.com");  
  26.   
  27.         // 建立邮件消息,发送简单邮件和html邮件的区别  
  28.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  29.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);  
  30.   
  31.         // 设置收件人,寄件人  
  32.         messageHelper.setTo("Mailto@sina.com");  
  33.         messageHelper.setFrom("username@163.com");  
  34.         messageHelper.setSubject("测试HTML邮件!");  
  35.         // true 表示启动HTML格式的邮件  
  36.         messageHelper  
  37.                 .setText(  
  38.                         "<html><head></head><body><h1>hello!!spring html Mail</h1></body></html>",  
  39.                         true);  
  40.   
  41.         senderImpl.setUsername("username"); // 根据自己的情况,设置username  
  42.         senderImpl.setPassword("password"); // 根据自己的情况, 设置password  
  43.         Properties prop = new Properties();  
  44.         prop.put("mail.smtp.auth""true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确  
  45.         prop.put("mail.smtp.timeout""25000");  
  46.         senderImpl.setJavaMailProperties(prop);  
  47.         // 发送邮件  
  48.         senderImpl.send(mailMessage);  
  49.   
  50.         System.out.println("邮件发送成功..");  
  51.     }  
  52. }  

3.发送嵌套图片的邮件
Email允许添加附件,也允许在multipart信件中内嵌资源。内嵌资源可能是你在信件中希望使用的图像,或者样式表,但是又不想把它们作为附件。



[java] view plaincopy
  1. package net.xftzr.mail;  
  2.   
  3. import java.io.File;  
  4. import java.util.Properties;  
  5.   
  6. import javax.mail.internet.MimeMessage;  
  7. import org.springframework.core.io.FileSystemResource;  
  8. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  9. import org.springframework.mail.javamail.MimeMessageHelper;  
  10.   
  11. /** 
  12.  * 本类测试邮件中嵌套图片 
  13.  *  
  14.  * @author sunny 
  15.  *  
  16.  */  
  17. public class AttachedImageMail  
  18. {  
  19.     public static void main(String[] args) throws Exception  
  20.     {  
  21.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  22.   
  23.         // 设定mail server  
  24.         senderImpl.setHost("smtp.163.com");  
  25.   
  26.         // 建立邮件消息,发送简单邮件和html邮件的区别  
  27.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  28.         // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,  
  29.         // multipart模式  
  30.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,  
  31.                 true);  
  32.   
  33.         // 设置收件人,寄件人  
  34.         messageHelper.setTo("toMail@sina.com");  
  35.         messageHelper.setFrom("username@163.com");  
  36.         messageHelper.setSubject("测试邮件中嵌套图片!!");  
  37.         // true 表示启动HTML格式的邮件  
  38.         messageHelper.setText(  
  39.                 "<html><head></head><body><h1>hello!!spring image html mail</h1>"  
  40.                         + "<img src=\"cid:aaa\"/></body></html>"true);  
  41.   
  42.         FileSystemResource img = new FileSystemResource(new File("g:/123.jpg"));  
  43.   
  44.         messageHelper.addInline("aaa", img);  
  45.   
  46.         senderImpl.setUsername("username"); // 根据自己的情况,设置username  
  47.         senderImpl.setPassword("password"); // 根据自己的情况, 设置password  
  48.         Properties prop = new Properties();  
  49.         prop.put("mail.smtp.auth""true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确  
  50.         prop.put("mail.smtp.timeout""25000");  
  51.         senderImpl.setJavaMailProperties(prop);  
  52.   
  53.         // 发送邮件  
  54.         senderImpl.send(mailMessage);  
  55.   
  56.         System.out.println("邮件发送成功..");  
  57.     }  
  58. }  

 

 

说明:嵌入图片<img src=\"cid:aaa\"/>,其中cid:是固定的写法,而aaa是一个contentId。

4.发送包含附件的邮件

[java] view plaincopy
  1. package net.xftzr.mail;  
  2.   
  3. import java.io.File;  
  4. import java.util.Properties;  
  5.   
  6. import javax.mail.internet.MimeMessage;  
  7. import org.springframework.core.io.FileSystemResource;  
  8. import org.springframework.mail.javamail.JavaMailSenderImpl;  
  9. import org.springframework.mail.javamail.MimeMessageHelper;  
  10.   
  11. public class AttachedFileMail  
  12. {  
  13.     /** 
  14.      * 本类测试的是关于邮件中带有附件的例子 
  15.      *  
  16.      * @param args 
  17.      */  
  18.     public static void main(String[] args) throws Exception  
  19.     {  
  20.         JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
  21.   
  22.         // 设定mail server  
  23.         senderImpl.setHost("smtp.163.com");  
  24.         // 建立邮件消息,发送简单邮件和html邮件的区别  
  25.         MimeMessage mailMessage = senderImpl.createMimeMessage();  
  26.         // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用,  
  27.         // multipart模式 为true时发送附件 可以设置html格式  
  28.         MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,  
  29.                 true"utf-8");  
  30.   
  31.         // 设置收件人,寄件人  
  32.         messageHelper.setTo("toMail@sina.com");  
  33.         messageHelper.setFrom("username@163.com");  
  34.         messageHelper.setSubject("测试邮件中上传附件!!");  
  35.         // true 表示启动HTML格式的邮件  
  36.         messageHelper.setText(  
  37.                 "<html><head></head><body><h1>你好:附件中有学习资料!</h1></body></html>",  
  38.                 true);  
  39.   
  40.         FileSystemResource file = new FileSystemResource(  
  41.                 new File("g:/test.rar"));  
  42.         // 这里的方法调用和插入图片是不同的。  
  43.         messageHelper.addAttachment("test.rar", file);  
  44.   
  45.         senderImpl.setUsername("username"); // 根据自己的情况,设置username  
  46.         senderImpl.setPassword("password"); // 根据自己的情况, 设置password  
  47.         Properties prop = new Properties();  
  48.         prop.put("mail.smtp.auth""true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确  
  49.         prop.put("mail.smtp.timeout""25000");  
  50.         senderImpl.setJavaMailProperties(prop);  
  51.         // 发送邮件  
  52.         senderImpl.send(mailMessage);  
  53.   
  54.         System.out.println("邮件发送成功..");  
  55.     }  
  56. }  


分享到:
评论

相关推荐

    spring mail通过代理发送邮件

    总之,关于“spring mail通过代理发送邮件”的主题,你需要了解Spring Mail的配置、JavaMail API的代理设置,以及可能用到的调试工具和网络环境。结合具体的源码和实践经验,才能确保在各种网络环境下成功发送邮件。

    利用 spring mail 通过 gmail(SSL) 发邮件

    Spring Mail是一个Java库,它简化了通过JavaMail API发送电子邮件的过程。本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果...

    使用springMail发送带附件的email

    2. **SpringMail**: Spring框架的一个模块,它简化了JavaMail API的使用,通过Spring的依赖注入和配置模型,使得邮件发送变得更加便捷。 3. **配置SpringMail**: 在Spring项目中,我们通常会创建一个`MailSender` ...

    spring + mail + 发送邮件完整 demo (含注释)

    Spring框架提供了集成JavaMail API的能力,使得发送邮件变得简单易行。本教程将围绕"Spring + Mail"的组合,结合Freemarker模板引擎,提供一个完整的发送邮件的Demo。 首先,我们需要在项目中添加相关的依赖。...

    java 发送邮件 spring发送邮件Mail

    Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...

    spring发送邮件demo

    在Spring中,发送电子邮件的功能是通过Spring的Mail API实现的,这在系统监控、报警通知、用户验证等场景中非常常见。下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常...

    spring mail

    1. JavaMail API:Spring Mail是建立在JavaMail API之上的,JavaMail API是Java中用于发送和接收电子邮件的标准API,提供了丰富的邮件处理功能。 2. Session:JavaMail API中的Session对象是发送邮件的核心,它包含...

    SpringMail发邮件

    通过集成SpringMail,开发者可以轻松地在应用程序中实现电子邮件的发送,无论是普通的文本邮件、HTML格式的邮件,还是带有附件的邮件。 SpringMail的核心依赖是JavaMail API,这是一个广泛使用的Java邮件处理库。...

    spring mail 的发送

    在`springmail2`这个示例项目中,可能包含了一个简单的Spring Boot应用,演示了如何使用Spring Mail发送邮件。这个示例可能包括一个`Main`类,启动Spring Boot应用,并调用`MailService`发送一封测试邮件。代码可能...

    springmail架包

    SpringMail 提供了与 JavaMail API 的简洁接口,允许开发者通过 Spring 框架发送邮件。JavaMail API 是 Java 平台上用于处理电子邮件的标准 API,而 SpringMail 则简化了它的使用,提供了一套与 Spring 配合良好的...

    spring mail的使用

    通过Spring的抽象层,我们可以方便地集成各种邮件服务提供商,如Gmail、Yahoo等,而无需直接处理复杂的JavaMail API。本篇文章将深入探讨如何在Spring中使用Spring Mail进行电子邮件的发送。 首先,我们需要在项目...

    java发送邮件 spring发送邮件

    通常,Spring框架的`spring-context`模块包含了`JavaMailSender`接口,而`javaee-api`或`javax.mail`库则提供了邮件发送的具体实现。确保在`pom.xml`(如果是Maven项目)或`build.gradle`(Gradle项目)中添加相应的...

    spring定时发送邮件

    Spring Mail提供了一个简单易用的API,使得在Java应用中发送邮件变得轻松。它支持SMTP(简单邮件传输协议)和JavaMail API,可以处理HTML邮件、附件等复杂需求。要使用Spring Mail,你需要在项目中引入相应的依赖,...

    springmail架包及各种邮件发送代码

    SpringMail还支持发送多部分邮件(同时包含文本和HTML)、设置发件人、抄送人和密送人,以及自定义邮件头信息。通过`MimeMessageHelper`的API可以实现这些功能。 6. **错误处理与调试** 在实际开发中,可能会遇到...

    java发送邮件(两种方式-springcloud方式+静态调用方式).zip

    **二、静态调用JavaMail API发送邮件** JavaMail API是Java平台上的邮件处理库,可以直接用来发送邮件,无需依赖任何框架。首先,引入JavaMail的依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; &lt;artifactId&gt;...

    Spring 使用163发邮件

    本主题将深入探讨如何使用Spring框架发送电子邮件,特别是通过163邮箱服务进行邮件发送。首先,我们需要理解Spring的JavaMailSender接口,它是Spring提供用来发送电子邮件的核心组件。 1. **JavaMailSender接口**:...

    spring+velocity发送邮件

    - `javaMailSender`: 这是Spring Mail模块中的一个接口,用于定义邮件发送的操作。 - `velocityEngine`: Velocity引擎实例,用于处理模板文件。 - `from`: 发件人邮箱地址。 - `title`: 邮件主题。 - `encoding`: ...

Global site tag (gtag.js) - Google Analytics