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. textarea输入框限制字数(JS)
  2. 这个“老婆生成器”说我有5个前妻...
  3. Crontab和sudo中无法使用TensorFlow ImportError libcublas.so.9.0
  4. cma检测_CMA检测方法
  5. 首次!华人获世界科学奖,其海洋蓝色能源技术或解决世界能源需求
  6. python字典副本_如何复制字典并仅在Python中编辑副本?
  7. Visual C++ 2011-07-18
  8. Java - 网络与多线程 - Java Socket 应用
  9. [译][Tkinter 教程15] event 事件绑定
  10. java fp-growth 算法包_java实现fp-growth算法
  11. 征途服务器维护时间,《征途》服务器重组几大怪现象
  12. P3356 火星探险问题
  13. 战国七雄中最强大的国家(除秦外)——赵国_我是亲民_新浪博客
  14. 阿泰,水晶报表--push样式模板
  15. 20165232 结对编程第二周总结
  16. Unity3D网络游戏0.2
  17. 超详细,如何不用任何第三方软件实现电脑与手机文件传输
  18. Java:DateUtils 获取 本上下(周/月)周一周日 最后一天 当月多少天
  19. 比比看手机安全软件谁更强?【系统收藏】
  20. 计算机专业理科二本录取分数线,理科二本大学排名及分数线

热门文章

  1. 康托展开和逆康托展开
  2. 电脑文件夹剪切后如何找回来?分享三种方法
  3. IMS/SIP学习(4)——subscribe、notify、invite过程
  4. Vue中v-for必须在vue实例对应元素下的子元素中循环渲染数据
  5. his跟hrp的区别
  6. vue的[__ob__: Observer]
  7. Android点击悬浮窗回到应用,android悬浮窗应用
  8. 写在5G边缘:2B本质是2C
  9. Win11一键还原win10右键菜单
  10. NC资金管理的银行对账下的余额调节表显示帐面余额不平,如何检查?