Java-利用spring发送邮件

 最近项目中需要发送邮件的功能,于是百度一大把例子。但是有很多都是一样的,一点特点都没有。所以决定整理一番。

        在spring2.X以后的版本就提供了org.springframework.mail来解决javaMail的集成问题。org.springframework.mail.javamail.JavaMailSenderImpl就是基于JavaMail API提供的MailSender实现类。这个实现类提供的功能已经非常完善了。支持各种类型的邮件的发送。代码量也大大减少。下面就用一个例子来说明它的优越性吧。
        spring集成javaMail肯定是要配置一个bean的,当然也可以在代码里写死,但是不推荐。spring关键代码如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 配置MailSender -->
< bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" >
     <!-- 邮件服务器 -->
     < property name = "host" value = "smtp.163.com" />
     <!-- 端口 -->
     < property name = "port" value = "25" />
     <!-- 你的邮箱 -->
     < property name = "username" value = "" />
     <!-- 邮箱密码 -->
     < property name = "password" value = "" />
     < property name = "javaMailProperties" >
         < props >
             <!-- 是否进行身份认证 -->
             < prop key = "mail.smtp.auth" >true</ prop >
             <!-- 是否采用SSL登录 -->
             < prop key = "mail.smtp.starttls.enable" >true</ prop >
         </ props >
     </ property >
</ bean >
        最关键的一步做好了,现在写个方法测试一下。先写个比较简单的 纯文本邮件发送方法吧。 关键代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void simpleMail() {
         try {
             // 使用Spring提供的MailSender
             ApplicationContext app = new ClassPathXmlApplicationContext(
                     "spring-mail.xml" );
             JavaMailSender mailSender = (JavaMailSender) app
                     .getBean( "mailSender" );
             // 创建一个纯文本邮件
             SimpleMailMessage mail = new SimpleMailMessage();
             // 发送方
             mail.setFrom(YourMail);
             // 接收人
             mail.setTo(ToMail);
             // 邮件标题
             mail.setSubject( "测试简单邮件发送" );
             // 内容
             mail.setText( "测试使用SpringMailSender发送邮件" );
             // 发送
             mailSender.send(mail);
             System.out.println( "邮件发送成功!" );
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
         YourMail、ToMail自己设定哈,我的就不暴露出来了。跑一下看看的。控制台输出发送成功,去邮箱看看的。如图:
mai1l
        刚一打开FoxMail就提示收到邮件了,还是比较顺利。如果要发送个附件,汇报一下工作呢。这个方法是不满足要求的,那就再写个方法吧。关键代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void attachedFileMail() {
         try {
             ApplicationContext app = new ClassPathXmlApplicationContext(
                     "spring-mail.xml" );
             JavaMailSender mailSender = (JavaMailSender) app
                     .getBean( "mailSender" );
             MimeMessage mime = mailSender.createMimeMessage();
             // multipart模式 为true时发送附件 可以设置html格式
             MimeMessageHelper messageHelper = new MimeMessageHelper(mime, true ,
                     "utf-8" );
             // 发送方
             messageHelper.setFrom(YourMail);
             // 接收人
             messageHelper.setTo(ToMail);
             // 邮件标题
             messageHelper.setSubject( "测试包含附件邮件发送" );
             // true 表示启动HTML格式的邮件
             messageHelper
                     .setText(
                             "<html><head></head><body><h3>你好:附件中有惊喜,请查收!</h3></body></html>" ,
                             true );
             // 附件
             FileSystemResource file = new FileSystemResource( new File(
                     "D:\\a.xls" ));
             messageHelper.addAttachment( "a.xls" , file);
             // 发送
             mailSender.send(mime);
             System.out.println( "邮件发送成功!" );
         } catch (MessagingException e) {
             e.printStackTrace();
         }
     }
        运行一下,又成功了。刷新邮箱看看的。
  mail21
 
        还是比较简单吧,相信这个代码已经表达的相当透彻了,如果还有不明白的,去我的网盘下载吧。地址:
注意:下载的demo还不能运行,需要自己在xml已经以及java代码中设置邮箱和密码。

你可能感兴趣的:(spring)