JavaMail API提供了邮件处理的框架,我们可以再此基础上封装成适合自己使用的邮件收发组件。
下面提供一个最简单的使用例子,此示例介绍了支持SSL方式的应用,如果不使用SSL可以根据注释,去除相关语句:
package example.mail;
import java.io.UnsupportedEncodingException;
import java.security.Security;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.URLName;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
public class Test {
private String username = "";//邮箱账户名 如: abc@qq.com
private String password = "";//邮箱密码
private String toAdd = "";//收件人电子邮箱地址 如:hello@qq.com
//发送邮件测试
public void sendSSLMail() throws AddressException, MessagingException{
//若启用SSL,需要注册安全传输的提供者
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//发送邮件必须的配置
Properties props = System.getProperties();
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);//若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.smtp.socketFactory.fallback", "false");//若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.smtp.socketFactory.port", "465");//若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.smtp.host", "smtp.qq.com");
props.setProperty("mail.smtp.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
final String username = this.username;//账户名称
final String password = this.password;//密码
//获取会话
Session session = Session.getDefaultInstance(props, new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(username, password);
}
});
//创建消息
Message msg = new MimeMessage(session);
//设置发件人,收件人等信息
msg.setFrom(new InternetAddress(username));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(this.toAdd, false));
msg.setSubject("Hello");
msg.setText("How are you");
msg.setSentDate(new Date());
//调用传输接口发送邮件消息
Transport.send(msg);
System.out.println("Message sent.");
}
//邮件接收测试
public void receivePOPSSLMail() throws MessagingException, UnsupportedEncodingException{
//若启用SSL,需要注册安全传输的提供者
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
//接收邮件必须的配置
Properties props = System.getProperties();
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); //若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.pop3.socketFactory.fallback", "false"); //若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.pop3.socketFactory.port", "995"); //若启用SSL,需要设置,否则不设置此项
props.setProperty("mail.pop3.port", "995");
//获取会话
Session session = Session.getInstance(props);
//接收邮箱的信息
URLName urln = new URLName("pop3","pop.qq.com",995,null,
this.username, this.password);
Store store = session.getStore(urln);
Folder inbox = null;
try {
store.connect();
inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE); //以读写方式打开时才能执行写标记动作
FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
System.out.println("邮件个数" + messages.length);
//遍历所有邮件
for (int i = 0; i < messages.length; i++) {
//解析一封邮件
String from = decodeText(messages[i].getFrom()[0].toString()); //发件人
InternetAddress ia = new InternetAddress(from); //解析发件人地址
System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
//其他信息
System.out.println("TITLE:" + messages[i].getSubject());
System.out.println("SIZE:" + messages[i].getSize());
System.out.println("DATE:" + messages[i].getSentDate());
messages[i].setFlag(Flags.Flag.DELETED, false);//设置删除标记
}
} finally {
try {
inbox.close(true);
store.close();
} catch (Exception e) {}
try {
store.close();
} catch (Exception e) {}
}
}
protected static String decodeText(String text) throws UnsupportedEncodingException {
if (text == null)
return null;
if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;
}
/**
* @param args
* @throws MessagingException
* @throws AddressException
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws AddressException, MessagingException, UnsupportedEncodingException {
Test t = new Test();
t.sendSSLMail();//发送邮件
// t.receivePOPSSLMail(); //接收邮件
}
}
总结:
1.若使用pop3协议收取邮件,网上查阅许多资料,貌似不支持对邮件进行已读和未读等标记。因此,只能全部收取然后全部删除,自己来处理对邮件标记的繁杂工作。(IMAP4协议支持)
分享到:
相关推荐
JavaMail API 是一个用于在Java应用程序中处理电子邮件的库,提供了与邮件协议无关的方式来发送、接收和管理邮件。这个API的初衷是创建类似Eudora、Pine和Microsoft Outlook这样的邮件用户代理(MUA),允许用户与...
- **Javamail API**:这是一个用于处理电子邮件的标准扩展包,支持创建、读取和发送电子邮件。Javamail API支持各种互联网邮件协议,例如SMTP、POP、IMAP、MIME、NNTP、S/MIME等。开发者可以利用Javamail API来构建...
这个入门教程将带你了解如何使用 JavaMail 来发送简单的文本邮件。在开始之前,你需要确保已经添加了 JavaMail 相关的库,这里提到的 "lib" 文件可能包含了这些必要的 JAR 包。 首先,你需要引入 JavaMail 的核心库...
JavaMail 是一个开源的 Java API,它允许 Java 程序员通过标准的邮件协议(如 SMTP、POP3 和 IMAP)发送、接收和管理电子邮件。这个压缩包包含的是 JavaMail 的版本 1.5.5,是针对 Java 开发者的强大工具,尤其在...
5. **JavaMail入门必备** 这个压缩包中的所有资源都是针对初学者设计的,旨在帮助他们快速掌握JavaMail的基础知识。通过学习这些资料,新手可以了解如何配置邮件服务器,创建和发送简单的邮件,以及如何逐步过渡到...
总的来说,JavaMail提供了一套完整的API来处理邮件的创建、发送和接收,通过`MimeMessage`、`Session`和`Properties`等类,开发者可以灵活地构建各种类型的电子邮件。在实际应用中,可以根据具体需求调整配置,实现...
1. **JavaMail API**: JavaMail API是Java平台用于处理邮件的核心库,它提供了创建、发送和接收邮件的接口。这个API包括了javax.mail和javax.mail.internet两个主要包,包含了许多类和接口,如Message、Session、...
JavaMail 是一个开源的Java库,它为Java程序员提供了发送、接收和操作电子邮件的强大功能。在Java应用程序中发送...它们提供了一套完整的API,使得开发者无需深入了解底层邮件协议,即可轻松地在应用中集成邮件功能。
以上就是JavaMail入门教程中接收邮件的基本步骤和关键知识点,通过这个教程,开发者可以学会如何使用JavaMail API实现邮件的接收功能。在实际应用中,可能还需要处理更多细节,如错误处理、邮件过滤、附件读取等,但...
#### 一、JavaMail快速入门 ##### 1.1 JavaMail概述 JavaMail是一套由Sun Microsystems定义的API集合,主要用于在Java应用程序中发送与接收电子邮件。尽管JavaMail功能强大且灵活,但由于其API设计较为复杂,并且...
在JavaMail入门教程之发送邮件(3)中,我们将重点学习如何使用JavaMail API来发送邮件。以下是一些关键知识点: 1. **Transport 类**:在JavaMail API中,`Transport` 类是负责实际发送邮件的核心组件。它实现了...
本教程将详细介绍如何使用JavaMail API解析邮件。 首先,要解析邮件,我们需要获取到邮件的基本信息。这可以通过调用`Message`对象的方法实现。例如,`Message.getFrom()`用于获取发件人的地址,`Message....
1. JavaMail API:JavaMail API是Java中用于处理邮件的库,它提供了一套完整的邮件服务接口,包括创建、发送和接收邮件。在Java中使用JavaMail API,可以实现SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP...
首先,我们需要导入JavaMail API库,它提供了发送邮件所需的所有功能。在你的`pom.xml`(如果你使用的是Maven)或者`build.gradle`(如果你使用的是Gradle)文件中,添加以下依赖: ```xml <!-- Maven --> ...
8. **JAF(JavaBeans Activation Framework)**和**JavaMail API**:这两者主要用于邮件服务和处理MIME类型的数据。 9. **JAX-RPC(Java API for XML-based RPC)**和**JAX-WS(Java API for XML Web Services)**...
适用于Android的JavaMail API 使用JavaMailAPI在Android中使用gmail帐户发送电子邮件的示例JavaMail API文档先决条件Android SDK v10入门该项目使用Gradle构建系统。 要构建此项目,请使用“ gradlew build”命令或...
7. **JavaMail API**: 用于发送和接收电子邮件,支持SMTP、POP3和IMAP协议。 8. **Java Management Extensions (JMX) 1.2**: JMX用于监控和管理Java应用程序,包括配置、性能统计和故障诊断等功能。 9. **Java ...
总结起来,这门JSP入门课程涵盖了Servlet的基本原理和操作,会话跟踪技术,以及如何结合JavaMail API发送邮件。同时,通过学习表达式语言EL,能更高效地在JSP页面中处理数据。这些知识是成为JSP开发者的基础,对于...
9. **JavaMail API**:J2EE 5.0提供了JavaMail API,用于发送和接收电子邮件,支持SMTP、POP3和IMAP协议。 10. **Web Services**:J2EE 5.0支持SOAP和RESTful Web服务的开发,包括JAX-WS和JAX-RS规范,方便应用程序...