我们是没办法使用javamail通过一般的代理服务器发送邮件的,比如下面的代码是没有效果的:
不过可以通过socks网关来访问外网的email服务器,当然,前提是你安装了一个socks服务器。完整的使用代理发送邮件代码如下:
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);
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( " 邮件发送! " );
}
}
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( " 邮件发送! " );
}
}
文章转自庄周梦蝶 ,原文发布时间5.17