Spring JavaMail发送邮件

一、邮件的相关概念

邮件协议。主要包括:

SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件

POP3协议:Post Office Protocol 3,即邮局协议的第三个版本,用于接收邮件

IMAP协议:Internet Message Access Protocol,即互联网消息访问协议,是POP3的替代协议



二、搭建James邮件服务器

James是Apache的一个开源项目,纯Java实现

搭建James服务器

① 下载apache-james-2.3.2.zip解压

② 运行bin目录下的run.bat即可启动服务器[Telnet  localhost 4555]

③ 通过apps\james\SAR-INF\config.xml配置服务器

注:先到bin下run一道。 放如非中文目录, 得再控制面板开启Telnet客户端



三、安装OutLook[邮件客户端]

产品秘钥:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT

创建用户账号

一、使用telnet连接James的Remote Administration Tool

二、以管理员身份登录

三、使用adduser命令添加用户


四、配置outlook邮件客户端

为了方便查看,可以配置Microsoft Outlook邮件客户端,保证James邮件服务器是启动状态,启动Microsoft Outlook.

选择“工具”->“选项”,打开“选项”面板。选择“邮件设置”并点击“电子邮件账户”,打开“账号设置”面板。在“电子邮件”选项卡下新建邮件账户



五、案例[搭建James邮件服务器]

需求说明:

在本机搭建James邮件服务器,自定义服务器的名称。

创建两个测试用户。

在Microsoft Outlook中配置其中一个测试用户为Outlook邮件账户



六、使用JavaMail发送电子邮件(案例)

需求:

使用JavaMail技术,实现从A账户给B账户发送一封电子邮件,标题为“会议通知”,邮件内容为“XX你好!请于明天下午16:00 准时到B01会议室召开技术讨论会。”通过Outlook 客户端查看邮件程序发送的邮件是否发送成功

关键代码:

创建一个类EmailAuthenticator并继承自Authenticator,并植入用户名和密码

创建Mail类设置邮件信息:


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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

public class Mail {

  private String mailServer,from,to,mailSubject,mailContent;

  private String username,password;

  public Mail(){

      //设置邮件信息

      //进行认证登录的用户名

      username="[email protected]";

      //认证密码

      password="hq";

      //认证的邮箱对应的邮件服务器

      mailServer="192.168.17.176";

      //发件人信息

      from="wj";

      //收件人信息

      to="[email protected]";

      //邮件标题

      mailSubject="我们都是好孩子333";

      //邮件内容

      mailContent="这是一封测试邮件!如有雷同,纯属不可能";

  }

  //设置邮件服务器

  @SuppressWarnings("static-access")

public  void send(){

      Properties prop=System.getProperties();

      //指定邮件server

      prop.put("mail.smtp.host", mailServer);

      

      //是否开启认证

      prop.put("mail.smtp.auth""true");

      

      //smtp协议的

      prop.put("mail.smtp.port""25");

      //产生Session服务

      EmailAuthenticator mailauth=new EmailAuthenticator(username, password);

      Session mailSession=Session.getInstance(prop,(Authenticator)mailauth);

       try {

           //封装Message对象

           Message message=new MimeMessage(mailSession);

           

           message.setFrom(new InternetAddress(from)); //发件人

           message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人

           message.setSubject(mailSubject);

           //设置内容(设置字符集处理乱码问题)

           message.setContent(mailContent,"text/html;charset=gbk");

           message.setSentDate(new Date());

           //创建Transport实例,发送邮件

           Transport tran=mailSession.getTransport("smtp");

           tran.send(message,message.getAllRecipients());

           tran.close();

           

        catch (Exception e) {

            e.printStackTrace();

        }

  }

测试类:  


1

2

3

4

5

6

7

8

public class MyTest {

    public static void main(String[] args) {

        Mail mail=new Mail();

        mail.send();

        System.out.println("success!");

    }

}

  



七、发送带附件的Mail


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

public class MailWithAttachment {

    private JavaMailSender mailSender; //必须使用 JavaMailSender

    public void setMailSender(JavaMailSender mailSender) {

        this.mailSender = mailSender;

    }

    

    public void send() throws MessagingException,IOException{

        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true"UTF-8");

        helper.setFrom("[email protected]");

        helper.setTo("[email protected]");

        

        helper.setSubject("哈哈哈");

        helper.setText("每日一笑,开开心心!!!");

        //添加附件1

        ClassPathResource file1 = new ClassPathResource(

                                        "/cn/bdqn/attachfiles/test.doc");

        helper.addAttachment(file1.getFilename(), file1.getFile());

        //添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题

        ClassPathResource file2 = new ClassPathResource(

                                        "/cn/bdqn/attachfiles/附件测试文件.doc");

        helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());

        mailSender.send(mimeMessage);

    }

}

测试类:  


1

2

3

4

5

6

7

8

9

10

11

12

13

public class MailTest {

    public static void main(String[] args){

        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        

        /*测试带附件的邮件*/

        try{

            MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");

            mailWithAttach.send();

        }catch(Exception e){

            System.out.print(e.toString());

        }

    }

}  

applicationContext.xml:大配置  

时间: 2024-10-13 05:55:13

Spring JavaMail发送邮件的相关文章

java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring 本文主要介绍利用JavaMailSenderImpl发送邮件.首先介绍了发送一般邮件,然后介绍了发送富文本(html)邮件及以velocity为模板发送邮件. 邮件发送分为为三步:创建邮件发送器.编写邮件.发送邮件. Spring的JavaMailSenderImpl提供了强大的邮件发送功能,可发送普通文本邮件.带附件邮件.html格式

使用JavaMail发送邮件-no object DCH for MIME type multipart/mixed报错解决

最近需要实现一个使用Spring schedule按一定时间间隔自动触发条件发送邮件的功能,在开发的过程中,是按照先测试能发出text/html文本邮件,然后测试添加附件发送邮件,我碰到的问题是,文本邮件能正常发送出来,但是添加附件的邮件却发不出来,这个问题困扰了我很久,所以有必要记录下. 报错内容:"javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed" 初

使用JavaMail发送邮件和接受邮件

一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应用在开发时都需要集成邮件发送功能,例如: 1. 给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. 2. 给过生日的注册会员自动发送一封表示祝贺的E-Mail. 3. 将网站的最新活动信息通过E-Mail发送给所有的注册会员. 二. 邮件服务器和协议 1. 邮件服务器: 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.so

javamail发送邮件的简单实例(转)

javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接复制即可. 第一个类:MailSenderInfo.java package com.util.mail;    /**    * 发送邮件需要使用的基本信息  *author by wangfun http://www.5a520.cn 小说520   */  

JavaMail发送邮件

发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁 bcc字段   -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮件密送给了谁 邮件体指的就是邮件的具体内容. 使用JavaMail创建邮件和发送邮件 JavaMail创建的邮件是基于MIME协议的.因此可以使用Java

javamail发送邮件(转)

今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接复制即可.jar包因为我不知道怎么传到javaeye上,所以朋友们回去自己打吧. 我的代码有三个类: 第一个类:MailSenderInfo.java Java代码   package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Pr

JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp 1 <%@ page language="java" p

SSM框架+Javamail发送邮件

本博客介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱 先要了解一下SMTP协议和SSL加密 SMTP:称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效.可靠的邮件传输.SMTP是一种请求响应的协议,也就是客户机向远程服务器发送请求,服务器响应,监听端口是25,所以其工作模式有两种:发送SMTP,接收SMTP SSL加密:用来保障浏

web应用中使用JavaMail发送邮件

现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp 1 <%@ page language="java" p