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();
}
}
闽公网安备 35060202000074号