JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Store,Transport, Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。不过JDK中并没有包含,使用JavaMail发送邮件需要使用Sun发布的mail.jar和activtion.jar两个包。

邮件协议:

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

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

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


JavaMail发邮件的流程:

  1.搭建James邮件服务器

  2.安装OutLook[邮件客户端]

  3.配置outLook邮件客户端

  4.搭建James邮件服务器


1.搭建james邮件服务器

   james是apache的一个开源项目,纯java实现。

  首先我们需要下载apache-james-2.3.2.zip(批:http://pan.baidu.com/s/1pJoyg7h)

  其次运行bin目录下的run.bat即可启动服务器

  然后运行cmd命令[Telnet  localhost 4555]

  最后通过apps\james\SAR-INF\config.xml配置服务器(修改节点)

2.安装OutLook[邮件客户端],3.配置outLook邮件客户端

  输入产品秘钥(可选,测试的话,不必输入)

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

  创建用户账号,根据Telnet  localhost 4555,进行连接,

  用户名和密码默认为root

  进入help,进行添加账户(adduser)

    按要求安装,下一步即可,注意下面这个:

hosts文件:

安装完成,进行测试:

4.搭建James邮件服务器

  

最后使用JavaMail发送邮件:

需求:账户收到由javaMail所发送的任务,以及附件信息。

核心代码:

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

创建Mail类(设置邮件信息):

public class Mail {private String mailServer,from,to,mailSubject,mailContent;private String username,password;public Mail(){//设置邮件信息//进行认证登录的用户名username="hq@mail.com";//认证密码password="hq";//认证的邮箱对应的邮件服务器mailServer="192.168.17.176";//发件人信息from="wj";//收件人信息to="wj@mail.com";//邮件标题mailSubject="我们都是好孩子333";//邮件内容mailContent="这是一封测试邮件!如有雷同,纯属不可能";}//设置邮件服务器@SuppressWarnings("static-access")
public  void send(){Properties prop=System.getProperties();//指定邮件serverprop.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();}}

  

测试类:  

public class MyTest {public static void main(String[] args) {Mail mail=new Mail();mail.send();System.out.println("success!");}}

  


七、发送带附件的Mail

public class MailWithAttachment {private JavaMailSender mailSender; //必须使用 JavaMailSenderpublic 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("hq@mail.com");helper.setTo("wj@mail.com");helper.setSubject("生活生活");helper.setText("生活不止眼前的苟且!!!");//添加附件1ClassPathResource 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);}
}

测试类:  

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:


外在压力增加时,就应增强内在的动力。

         --- 告诫自己

转载于:https://www.cnblogs.com/hq-123/p/6192606.html

JavaMail和James的秘密花园相关推荐

  1. Vmare安装使用教程

    原文:http://www.5dmail.net/html/2004-8-31/200483195452.htm 现如今有很多人都拥有电脑,但多数人都只有一两台,想组建一个自己的局域网或者是做个小规模 ...

  2. linux 6不能自动挂载u盘,Linux CentOS 6.7 挂载U盘

    JavaMail和James JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaM ...

  3. java outlook 发送邮件_基于java使用JavaMail发送邮件

    一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...

  4. JavaMail基本使用

    JavaMail基本使用 基本概述 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于Ja ...

  5. 搭建james邮件服务器

    James是Apache的一个开源项目,纯Java实现,Apache james Server作为一个企业级的邮件服务器,对SMTP,POP3,IMAP等邮件协议提供完整的支持. 1.搭建James服 ...

  6. JavaMail 给多人发送邮件

    JavaMail发送邮件 多人发送 在我们开发过程中经常会用到邮件,比如 : 发送通知,找回密码 验证码  等等,再次总结了使用javaMail发送邮件,无需单间james等邮件服务器也可发送邮件 j ...

  7. javamail阅读回执_使用阅读回执可能会让您变得更好

    javamail阅读回执 微处理 (Microprocessing) Of all the different tools and features we use to communicate vir ...

  8. java毕业设计——基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码)——邮件收发系统

    基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Javamail的邮件收发系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  9. java javamail,基于java使用JavaMail发送邮件

    一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...

最新文章

  1. caffeImagenet相关
  2. 【微信小程序企业级开发教程】订阅消息功能
  3. 汇编: mul乘法指令(字乘法结果在dx:ax中,8位乘法:一个乘数默认放在al中)
  4. Groovy 1.5.7 出现java.lang.LinkageError问题
  5. Tez UI界面一直处于loading
  6. MySQL启动很慢的原因
  7. linux系统安装显卡驱动卡顿,关于Ubuntu16.04上N卡驱动导致滚动屏幕卡顿问题
  8. CORS漏洞的利用方式(精)
  9. 由摄像机外参矩阵求解像片的外方位线元素
  10. Linux多线程工作笔记0002---C语言函数前面的*是什么意思
  11. 自学python能学成吗-Python能自学成功吗?
  12. postgresql去除首尾空格
  13. 小赛毛游C记——分支和循环语句(1)
  14. mysql数据字段属性
  15. 个人简历模板html5
  16. Python-维度dim的定义及其理解使用
  17. js: 动画 筋斗云导航栏 仿淘宝关闭二维码
  18. npm被玩坏了:修复nodejs(‘npm‘ 不是内部或外部命令)
  19. 图像处理----美白
  20. 谷歌地图商家抓取工具 G-Business Extractor 7.5

热门文章

  1. word怎么转换成pdf文档——两种转换方法分享
  2. 微信小程序组件(车牌号输入,支付键盘,滑块验证)
  3. Intel (R) 82801G (ICH7 Family) USB Universal Host Controller前面有感叹号
  4. PTC联手阿里云共同提高中国工业4.0认可度
  5. 数据结构:栈「详解」
  6. Unity-3D捕鱼达人小游戏开发 —— 枪威力的修改
  7. 记住这几个排查蓝屏的经验,简单省钱不上当!
  8. 基于JavaWeb二手商城设计与实现
  9. java 给qq邮箱发邮件_用java写一个给自己QQ邮箱发一封电子邮件的程序
  10. 1. 第一讲 primitives(基础知识)