Posted on 2007-03-04 11:50
dennis 閱讀(5189)
評論(1) 編輯 收藏 所屬分類:
java
??? 我們是沒辦法使用javamail通過一般的代理服務器發送郵件的,比如下面的代碼是沒有效果的:
??????? Properties?props?=?System.getProperties();
??????? props.setProperty("proxySet","true");
??????? props.setProperty("ProxyHost","192.168.155.1");
??????? props.setProperty("ProxyPort","1080");
??????? //或者這樣,也是沒用
??????? //Properties?props?=?System.getProperties();
??????? //props.setProperty("proxySet","true");
??????? //props.setProperty("http.proxyHost","192.168.155.1");
??????? //props.setProperty("http.proxyPort","808");
??????? props.put("mail.smtp.auth",?"true");
? ? ? ? props.put("mail.debug",?"true");
????????//?props.put("mail.store.protocol",?"pop3");
????????//?props.put("mail.transport.protocol",?"smtp");
????????final?String?username?= "username"
????????final?String?password?= "password"
????????Session?session?=?Session.getDefaultInstance(props,
????????????????new?Authenticator()?{
????????????????????protected?javax.mail.PasswordAuthentication?getPasswordAuthentication()?{
????????????????????????return?new?javax.mail.PasswordAuthentication(username,
????????????????????????????????password);
????????????????????}
????????????????});
????????MimeMessage?message?=?new?MimeMessage(session);
??????? 







? ???
??? 不過可以通過socks網關來訪問外網的email服務器,當然,前提是你安裝了一個socks服務器。完整的使用代理發送郵件代碼如下:
????
package?net.rubyeye.testjms;
import?java.util.Date;
import?java.util.Properties;
import?java.security.Security;
import?javax.mail.Address;
import?javax.mail.Authenticator;
import?javax.mail.Session;
import?javax.mail.Transport;
import?javax.mail.internet.InternetAddress;
import?javax.mail.internet.MimeMessage;
public?class?MailTest?{
????/**
?????*?@param?args
?????*/
????public?static?void?main(String[]?args)?throws?Exception?{
????????//?Security.addProvider(new?com.sun.net.ssl.internal.ssl.Provider());
????????//?final?String?SSL_FACTORY?=?"javax.net.ssl.SSLSocketFactory";
????????//設置代理服務器
????????Properties?props?=?System.getProperties();
????????props.setProperty("proxySet",?"true");
????????props.setProperty("socksProxyHost",?"192.168.155.1");
????????props.setProperty("socksProxyPort",?"1081");
????????props.setProperty("mail.smtp.host",?"smtp.126.com");
????????
????????//?props.setProperty("mail.smtp.socketFactory.class",?SSL_FACTORY);
????????//?props.setProperty("mail.smtp.socketFactory.fallback",?"false");
????????//?props.setProperty("mail.smtp.port",?"465");
????????//?props.setProperty("mail.smtp.socketFactory.port",?"465");
????????props.put("mail.smtp.auth",?"true");
????????props.put("mail.debug",?"true");
????????//?props.put("mail.store.protocol",?"pop3");
????????//?props.put("mail.transport.protocol",?"smtp");
????????final?String?username?=?"username";
????????final?String?password?=?"password";
????????
????????//使用驗證
????????Session?session?=?Session.getDefaultInstance(props,
????????????????new?Authenticator()?{
????????????????????protected?javax.mail.PasswordAuthentication?getPasswordAuthentication()?{
????????????????????????return?new?javax.mail.PasswordAuthentication(username,
????????????????????????????????password);
????????????????????}
????????????????});
????????MimeMessage?message?=?new?MimeMessage(session);
????????Address?address?=?new?InternetAddress("killme6115@126.com");
????????Address?toAaddress?=?new?InternetAddress("killme6115@sina.com");
????????
????????message.setFrom(address);
????????message.setRecipient(MimeMessage.RecipientType.TO,?toAaddress);
????????message.setSubject("測試");
????????message.setText("test");
????????message.setSentDate(new?Date());
????????
????????Transport.send(message);
????????System.out.println("郵件發送!");
????}
}