[i]JavaMail的属性以及mail.jar的Bug
Java, JavaMail, SMTP
必须了解的基本概念与核心类:Session是邮件操作的接口;Transport是收发邮件所使用的协议,一般Session会有多个Transport;Message是收发操作的单位;Store是消息的集合,类似邮件客户端。每个Store包含一系列的Folder和Message,每个Folder又包含一系列的Folder和Message。[/i]
Session需要使用javax.mail.util.Properties来构造,常用的用来构造Session的属性:
属性名
含义
javax.mail.smtp.user
SMTP的缺省用户名。
javax.mailsmtp.host
要连接的SMTP服务器。
javax.mailsmtp.port
要连接的SMTP服务器的端口号,如果connect没有指明端口号就使用它,缺省值25。
javax.mailsmtp.connectiontimeout
Socket连接超时值,单位毫秒,缺省值不超时。
javax.mailsmtp.timeout
Socket I/O超时值,单位毫秒,缺省值不超时。
javax.mailsmtp.from
SMTP使用的Email地址,用来设置邮件的return地址。缺省是Message.getFrom()或InternetAddress.getLocalAddress()。注意:javax.mailsmtp.user优先使用
javax.mailsmtp.localhost
localhost名,缺省是InetAddress.getLocalHost().getHostName()。如果JDK和name service正确配置,一般不需设置。
javax.mailsmtp.ehlo
如果为false,那么不会尝试使用EHLO命令登录,缺省是true。通常EHLO命令失败,会倒退到HELO命令。这个属性只有在服务器没有fail EHLO属性或没有实现EHLO属性。
javax.mailsmtp.auth
缺省是false,如果为true,尝试使用AUTH命令认证用户。
javax.mailhost
邮件交互的主机。
javax.mailtransport.protocol
要装入session的协议(smtp、pop3、imap、nntp)。
javax.mailuser
登录邮件服务器的用户名(发送邮件时需要)。
javax.mailfrom
发件人地址(发送邮件时需要)。
mail.jar在1.3.1中存在一个严重的Bug:
当调用transport.connect();连接邮件SMTP服务器的时候,如果SMTP服务器没有响应,此API会一直等待不断开连接,即便你设置了javax.mail.smtp.connectiontimeout属性也不管用。这样发送邮件的线程就会一直是RUNABLE状态,但是却无所作为。
Java, JavaMail, SMTP
必须了解的基本概念与核心类:Session是邮件操作的接口;Transport是收发邮件所使用的协议,一般Session会有多个Transport;Message是收发操作的单位;Store是消息的集合,类似邮件客户端。每个Store包含一系列的Folder和Message,每个Folder又包含一系列的Folder和Message。[/i]
Session需要使用javax.mail.util.Properties来构造,常用的用来构造Session的属性:
属性名
含义
javax.mail.smtp.user
SMTP的缺省用户名。
javax.mailsmtp.host
要连接的SMTP服务器。
javax.mailsmtp.port
要连接的SMTP服务器的端口号,如果connect没有指明端口号就使用它,缺省值25。
javax.mailsmtp.connectiontimeout
Socket连接超时值,单位毫秒,缺省值不超时。
javax.mailsmtp.timeout
Socket I/O超时值,单位毫秒,缺省值不超时。
javax.mailsmtp.from
SMTP使用的Email地址,用来设置邮件的return地址。缺省是Message.getFrom()或InternetAddress.getLocalAddress()。注意:javax.mailsmtp.user优先使用
javax.mailsmtp.localhost
localhost名,缺省是InetAddress.getLocalHost().getHostName()。如果JDK和name service正确配置,一般不需设置。
javax.mailsmtp.ehlo
如果为false,那么不会尝试使用EHLO命令登录,缺省是true。通常EHLO命令失败,会倒退到HELO命令。这个属性只有在服务器没有fail EHLO属性或没有实现EHLO属性。
javax.mailsmtp.auth
缺省是false,如果为true,尝试使用AUTH命令认证用户。
javax.mailhost
邮件交互的主机。
javax.mailtransport.protocol
要装入session的协议(smtp、pop3、imap、nntp)。
javax.mailuser
登录邮件服务器的用户名(发送邮件时需要)。
javax.mailfrom
发件人地址(发送邮件时需要)。
mail.jar在1.3.1中存在一个严重的Bug:
当调用transport.connect();连接邮件SMTP服务器的时候,如果SMTP服务器没有响应,此API会一直等待不断开连接,即便你设置了javax.mail.smtp.connectiontimeout属性也不管用。这样发送邮件的线程就会一直是RUNABLE状态,但是却无所作为。