javamail通过代理发送邮件

我们是没办法使用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("邮件发送!");}}

 

Socks5代理服务器安装及配置文件:

1.找到socks5-v1.0r11.tar.gz这个软件包,我找这个软件包找了有一会,建议在北大天网中搜索,很快的
2.传到服务器上
3.开始编译,安装
#tar xvfz socks5-v1.0r11.tar.gz
#cd socks5-v1.0r11
#./configure --with-threads
#make
#make install
4.开始配置
一般来说安装完后,会在/etc目录下生成socks5.conf(配置文件)和socks5.passwd(用于验证的文件)这两个文件,
下面我把我的配置文件帖出来:

#/etc/socks5.conf#指定SOCKS v5绑定的ip地址和监听的端口。如果不指定绑定的IP将使用0.0.0.0set SOCKS5_BINDINFC 192.168.0.8:1080#忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值set SOCKS5_NOIDENT#指定连接停顿最长时间。超过最大值后,socks5断开连接set SOCKS5_TIMEOUT 15#socks5将接受SOCKS V4 协议的请求,默认不接受set SOCKS5_V4SUPPORT#指定同时存在的最大子进程数,Socks5预设为64set SOCKS5_MAXCHILD 4#指定密码文件set SOCKS5_PWDFILE /etc/socks5.passwd#对所有的客户连接都使用username/password用户认证方法auth - - u#允许来自192.168.0.X的任何经过用户认证的连接permit u - 192.168.0.X - - -permit u - 192.168.0.X - - -permit u - 192.168.0.X - - -permit u - 192.168.0.X - - -

 

#/etc/socks5.passwd#用户  密码userA passwdAuserB passwdBuserC passwdC

前面的一些设置由于我在配置文件里都写了相关的内容,就不在说明了
如果不需要用户验证只需要把

auth - - u改成 auth - - -permit u - 192.168.0.X - - -改成permit - - - - - -


大家注意上面permit - - - - - -这一句,是使任何人都可以使用你的socks5 server,非常不安全(让你作跳板),最好是有点限制

permit - - clientIP - - - 



 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部