使用JavaMail实现收发电子邮件功能
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。本文将介绍如何安装JavaMail,使用JavaMail发送和接受电子邮件。
JavaMail是可选包,因此如果需要使用的话你需要首先从java.sun.com下载。目前最新版本是JavaMail1.3.2,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。这样JavaMail就安装好了。
JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。创建的方法如下所示:
Properties props = new Properties();
// fill props with any information
Session session = Session.getDefaultInstance(props, null);
构建了Session后,我们就可以创建Message对象了,它需要和Session绑定。
// Define message
MimeMessage message = new MimeMessage(session);
Message中我们可以定义类似于邮件发送人,邮件接收者,邮件标题和邮件内容等。
// Set the from address
message.setFrom(new InternetAddress(from));
// Set the to address
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set the subject
message.setSubject("Hello JavaMail");
// Set the content
message.setText("Welcome to JavaMail");
构造了Message后,我们可以发送第一封邮件了,在JavaMail中提供了Transport类来发送邮件,只需要调用send方法。默认是使用SMTP协议发送邮件的。
// Send message
Transport.send(message);
Store和Folder类是我们在接收邮件的时候需要用到的,同样我们需要告诉Store接收邮件的时候使用什么协议比如POP3,然后我们需要连接到邮件服务器,通过调用Store的connect()方法。连接到Store后我们就可以得到Folder了,在接收Message前确保你已经打开了Folder,然后可以调用Folder的getMessages()方法了。得到Message[]。接收后不要忘记关闭Folder和Store。
// Get the store
Store store = session.getStore("pop3");
// Connect to store
store.connect(host, username, password);
// Get folder
Folder folder = store.getFolder("INBOX");
// Open read-only
folder.open(Folder.READ_ONLY);
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
// Get directory
Message message[] = folder.getMessages();
下面的代码MailExample和GetMessageExample分别实现了发送和接受邮件的功能,供大家参考。有时间你也可以到java.sun.com读读JavaMail的tutorial。
//发送邮件
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class MailExample
{
public static void main(String args[]) throws Exception
{
String host = args[0];
String from = args[1];
String to = args[2];
// Get system properties
Properties props = System.getProperties();
// Setup mail server
props.put("mail.smtp.host", host);
// Get session
Session session = Session.getDefaultInstance(props, null);
// Define message
MimeMessage message = new MimeMessage(session);
// Set the from address
message.setFrom(new InternetAddress(from));
// Set the to address
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set the subject
message.setSubject("Hello JavaMail");
// Set the content
message.setText("Welcome to JavaMail");
// Send message
Transport.send(message);
}
}
//接收邮件
import java.io.*;
import java.util.Properties;
import javax.mail.*;
public class GetMessageExample
{
public static void main(String args[]) throws Exception
{
String host = "263.net";
String username = "username";//your username
String password = "password";//your password
// Create empty properties
Properties props = new Properties();
// Get session
Session session = Session.getDefaultInstance(props, null);
// Get the store
Store store = session.getStore("pop3");
// Connect to store
store.connect(host, username, password);
// Get folder
Folder folder = store.getFolder("INBOX");
// Open read-only
folder.open(Folder.READ_ONLY);
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
// Get directory
Message message[] = folder.getMessages();
for (int i = 0, n = message.length; i < n; i++)
{
// Display from field and subject
System.out.println(i + ": " + message[i].getFrom()[0] + "/t"
+ message[i].getSubject());
System.out
.println("Do you want to read message? [YES to read/QUIT to end]");
String line = reader.readLine();
if ("YES".equals(line))
{
// Display message content
System.out.println(message[i].getContent());
} else if ("QUIT".equals(line))
{
break;
}
}
// Close connection
folder.close(false);
store.close();
}
}
文章录入:mingjava 责任编辑:mingjava 从http://www.j2medev.com网站转发