本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17909093,转载请注明。
上篇文章介绍了JavaMail并实现了一个发送邮件的简单示例,JavaMail API使用上非常灵活,比如,服务器信息可以设置到Session中,也可以设置到Transport中,收件人可以设置到Message中,也可以设置到Transport中,如何使用,取决于我们应用程序中的实际情况。本文详细的介绍一下这三个类的主要方法。
Session
Session用于收集JavaMail运行过程中的环境信息,它可以创建一个单例的对象,也可以每次创建新的对象,Session没有构造器,只能通过如下方法创造实例:
static Session |
getDefaultInstance(Properties props)Get the default Session object. |
static Session |
getDefaultInstance(Properties props,Authenticator authenticator)Get the default Session object. |
static Session |
getInstance(Properties props)Get a new Session object. |
static Session |
getInstance(Properties props,Authenticator authenticator)Get a new Session object. |
# JavaMail IMAP provider Sun Microsystems, Inc protocol=imap; type=store; class=com.sun.mail.imap.IMAPStore; vendor=Sun Microsystems, Inc; protocol=imaps; type=store; class=com.sun.mail.imap.IMAPSSLStore; vendor=Sun Microsystems, Inc; # JavaMail SMTP provider Sun Microsystems, Inc protocol=smtp; type=transport; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc; protocol=smtps; type=transport; class=com.sun.mail.smtp.SMTPSSLTransport; vendor=Sun Microsystems, Inc; # JavaMail POP3 provider Sun Microsystems, Inc protocol=pop3; type=store; class=com.sun.mail.pop3.POP3Store; vendor=Sun Microsystems, Inc; protocol=pop3s; type=store; class=com.sun.mail.pop3.POP3SSLStore; vendor=Sun Microsystems, Inc;每一行声明了协议名称、类型、实现类、供应商、版本等信息,如果需要自己实现相应的协议,必须按照该格式配置好,Java Mail API中才能正确的调用到。Session中提供的创建Trasnsport和Store的方法如下:
Store |
getStore()Get a Store object that implements this user's desired Store protocol. |
Store |
getStore(Provider provider)Get an instance of the store specified by Provider. |
Store |
getStore(String protocol)Get a Store object that implements the specified protocol. |
Store |
getStore(URLName url) |
Transport |
getTransport()Get a Transport object that implements this user's desired Transport protcol. |
Transport |
getTransport(Address address)Get a Transport object that can transport a Message of the specified address type. |
Transport |
getTransport(Provider provider)Get an instance of the transport specified in the Provider. |
Transport |
getTransport(String protocol)Get a Transport object that implements the specified protocol. |
Transport |
getTransport(URLName url)Get a Transport object for the given URLName. |
Message
Message是邮件的载体,用于封装邮件的所有信息,Message是一个抽象类,已知的实现类有MimeMessage。一封完整的邮件都有哪些信息呢?我们打开一个邮件客户端,我用的是FoxMail,新建一封邮件,如下图所示:
这就是一封完整的邮件包含的所有信息,默认情况下是没有暗送和回复设置的,可以通过菜单栏-->查看-->暗送地址/回复地址来显示出来,回复地址默认情况下为发件人,暗送是比较猥琐的发邮件方式,暗送邮件除了被暗送者,没有人能知道暗送给谁了,邮件头信息中也不会记录。下面来看下Message中设置邮件信息的一些方法。
发件人
abstract void |
setFrom()Set the "From" attribute in this Message |