JavaMail API的应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaMail API的应用相关的知识,希望对你有一定的参考价值。
JavaMail API 是一个用于阅读、编写和发送电子消息的可选包(标准扩展),用来创建邮件用户代理(Mail User Agent,MUA)类型程序。
JavaMail API 需要 JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。
下载后解压.zip 文件,将 mail.jar 文件和 activation.jar 文件复制到 JRE(Java 运行时环境,Java Runtime Environment)目录下的 lib/ext 目录中去。
或者,将 jar 文件添加系统到 CLASSPATH 中。
首先,需要针对各个邮箱的服务器地址等信息进行分别了解
1.网易邮箱的 POP3 与 SMTP 服务器
邮箱 | POP3 服务器(端口110) | SMTP 服务器(端口25) |
188.com
|
pop3.188.com | smtp.188.com |
163.com
|
pop3.163.com | smtp.163.com |
126.com
|
pop3.126.com | smtp.126.com |
netease.com
|
pop.netease.com | smtp.netease.com |
yeah.net
|
pop.yeah.net | smtp.yeah.net |
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
2.腾讯邮箱的 POP3 与 SMTP 服务器
邮箱 | POP3服务器(端口995) | SMTP服务器(端口465或587) |
---|---|---|
qq.com | pop.qq.com | smtp.qq.com |
SMTP服务器需要身份验证。所以需要获取授权码。
具体内容:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28
代码演示:
利用JavaMail接收邮件
// JavaMail接收邮件 Properties props = new Properties(); props.put("mail.pop3.host", "pop.163.com"); props.put("mail.pop3.port", "110"); Session session = Session.getDefaultInstance(props); Store store = session.getStore("pop3"); store.connect("y**********@163.com", "y*************"); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); int size = folder.getMessageCount(); for(int i=1; i<=size; i++) { Message message = folder.getMessage(i); String from = message.getFrom()[0].toString(); String subject = message.getSubject(); // String content = (String) message.getContent(); Date date = message.getSentDate(); System.out.println("From: " + from); System.out.println("Subject: " + subject); // System.out.println("Content: " + content); System.out.println("Date: " + date); System.out.println("接收成功!"); }
利用JavaMail发送邮件
// JavaMail发送邮件 Properties props = System.getProperties(); props.put("mail.smtp.host", "smtp.163.com"); props.put("mail.smtp.port", "25"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("y**********@163.com", "y*************"); } }); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("y**********@163.com")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("3********@qq.com")); message.setSubject("JavaMail发送测试"); message.setText("JavaMail发送测试JavaMail发送测试JavaMail发送测试"); Transport.send(message); System.out.println("发送邮件成功!");
以上是关于JavaMail API的应用的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaMail API 时出现 SSLException
iMail 的 JavaMail API -- java.net.SocketException: Permission denied: connect