java James

使用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-12 09:03:15

java James的相关文章

JVM ,JIT ,GC RUNTIME 解析

https://www.infoq.com/articles/OpenJDK-HotSpot-What-the-JIT Understanding HotSpot JVM Performance with JITWatch How Facebook Redesigned the HHVM JIT Compiler for Performance Python JIT Compiler PyPy 4 Brings SMD Vectorization, Performance Improvement

Mysql学习笔记(八)索引

原文:Mysql学习笔记(八)索引 PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使查找的速度明显加快... 3.当使用分组和排序进行查询时,可以缩短时间... 索引的缺点: 1.维护索引需要耗费数据库的资源... 2.索引需要占用磁盘空间... 3.对表进行增删改的时候,由于索引的存在,时间会有所增加... 索引的分类... 普通索引和唯一索引

Java之父 James Gosling 发表博文 《Too Soon》纪念乔布斯。

几个礼拜前,我们还在讨论乔布斯的辞职.虽然我们都知道这意味着什么,但是我没有想到一切来的如此之快.已经有很多关于这件事情的文章了,特别是“经济学人”的这篇文章. 乔布斯是一个很独特的人.苹果找不到人替代他,我也不认为他们应该尝试寻找乔布斯的替代者.因为,他是神一样的人物.苹果公司的员工对他有一种宗教式的崇拜.在工作中,他是出了名的难以相处,和对完美的极度追求.我曾和他有过三次面试,一次是他被苹果炒掉之前,一次是在NeXT,一次是他回归苹果以后.每一次我们都在Good Earth 吃了一顿时间很长

【转】Java基础知识总结

写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用.demo 4,该技术什么时候用?test. ------------------------------------------------------------------------------------

Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言.废话不多说,下边就给广大程序猿们推荐一些Java进阶的好书. 第一部分:Java语言篇 1.<Java编程规范> 适合对象:初级.中级 介绍:这本书的作者是被誉为Java之父的James Gosling,入门者推荐阅读,对基础的讲解很不错. 2.<Java编程思想> 适合对象:初级.中级 介绍:豆瓣给出了9.1的评分,全球程序员广泛赞誉.有人说这本书不适合初学者,不过小编认为作者并没有对读者已有的知识经验有过多要求,

Java学习:JDBC

jdbc简介 DBC(Java Database Connectivity)是一个独立于特定数据库管理系统.通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法.方便地访问数据库资源. jdbc的核心API Driver接口:数据库驱动程序的接口,所有的数据库厂商需要的驱动程序需要实现此接口. Connection接口:与具体的数据库连接对象: Statement createStatement()    创建一个静态sq

[转]World Wind Java开发之五——读取本地shp文件

World Wind Java 使用IconLayer图层类表现点和多点数据,使用RenderableLayer图层表现线和面数据,一个图层只能对应一组shape文件.World Wind Java首先使用ShapefileLoader类完成对shape文件的读取和加载,再通过createLayerFromSource方法创建RenderableLayer,最后将创建的Layer加在layers上.源码如下: /** * * 方法名称: AddShapeData : * 方法描述: 添加本地sh

(转)在JAVA实现DataTable对象(三)——DataTable对象实现

大家都是行家,我就直接上代码了,我这个代码应该还是能看懂的,嘻嘻…. 1: import java.util.ArrayList; 2: import java.util.List; 3:   6:   7: public final class DataTable { 8:   9: private DataRowCollection rows; //用于保存DataRow的集合对象 10: private DataColumnCollection columns; //用于保存DataCol

Java懒汉式单例模式详解

单例模式最常见的有两种,饿汉式和懒汉式两种.本文先简单说一下懒汉式单例,再着重叙述饿汉式单例,饿汉式单例是本文的叙述重点. 懒汉式的优点是:写起来比较简单,而且不存在多线程同步问题,避免了synchronized所造成的性能问题:缺点是:初始化类的时候就需要构造实例,(即便你还没有用到这个实例),因此在某些特定条件下会耗费内存.懒汉式的写法如下: 1 /** 2 * 懒汉式单例 3 * @author James Chong 4 * 5 */ 6 public class SingleTon {