JavaMail和James的秘密花园
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的秘密花园相关推荐
- Vmare安装使用教程
原文:http://www.5dmail.net/html/2004-8-31/200483195452.htm 现如今有很多人都拥有电脑,但多数人都只有一两台,想组建一个自己的局域网或者是做个小规模 ...
- linux 6不能自动挂载u盘,Linux CentOS 6.7 挂载U盘
JavaMail和James JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaM ...
- java outlook 发送邮件_基于java使用JavaMail发送邮件
一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...
- JavaMail基本使用
JavaMail基本使用 基本概述 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于Ja ...
- 搭建james邮件服务器
James是Apache的一个开源项目,纯Java实现,Apache james Server作为一个企业级的邮件服务器,对SMTP,POP3,IMAP等邮件协议提供完整的支持. 1.搭建James服 ...
- JavaMail 给多人发送邮件
JavaMail发送邮件 多人发送 在我们开发过程中经常会用到邮件,比如 : 发送通知,找回密码 验证码 等等,再次总结了使用javaMail发送邮件,无需单间james等邮件服务器也可发送邮件 j ...
- javamail阅读回执_使用阅读回执可能会让您变得更好
javamail阅读回执 微处理 (Microprocessing) Of all the different tools and features we use to communicate vir ...
- java毕业设计——基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码)——邮件收发系统
基于Java+Javamail的邮件收发系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Javamail的邮件收发系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...
- java javamail,基于java使用JavaMail发送邮件
一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Prot ...
最新文章
- textarea输入框限制字数(JS)
- 这个“老婆生成器”说我有5个前妻...
- Crontab和sudo中无法使用TensorFlow ImportError libcublas.so.9.0
- cma检测_CMA检测方法
- 首次!华人获世界科学奖,其海洋蓝色能源技术或解决世界能源需求
- python字典副本_如何复制字典并仅在Python中编辑副本?
- Visual C++ 2011-07-18
- Java - 网络与多线程 - Java Socket 应用
- [译][Tkinter 教程15] event 事件绑定
- java fp-growth 算法包_java实现fp-growth算法
- 征途服务器维护时间,《征途》服务器重组几大怪现象
- P3356 火星探险问题
- 战国七雄中最强大的国家(除秦外)——赵国_我是亲民_新浪博客
- 阿泰,水晶报表--push样式模板
- 20165232 结对编程第二周总结
- Unity3D网络游戏0.2
- 超详细,如何不用任何第三方软件实现电脑与手机文件传输
- Java:DateUtils 获取 本上下(周/月)周一周日 最后一天 当月多少天
- 比比看手机安全软件谁更强?【系统收藏】
- 计算机专业理科二本录取分数线,理科二本大学排名及分数线