服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用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();
    }
}

扫描关注微信公众号