javamail通过代理发送邮件
来源:互联网 发布:卡通制作软件 编辑:程序博客网 时间:2024/05/18 00:26
我们是没办法使用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);
不过可以通过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.0 set 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预设为64 set 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 passwdA userB passwdB userC passwdC
前面的一些设置由于我在配置文件里都写了相关的内容,就不在说明了
如果不需要用户验证只需要把
auth - - u 改成 auth - - - permit u - 192.168.0.X - - - 改成 permit - - - - - -
大家注意上面permit - - - - - -这一句,是使任何人都可以使用你的socks5 server,非常不安全(让你作跳板),最好是有点限制
如
permit - - clientIP - - -
- javamail通过代理发送邮件
- 通过javaMail发送邮件
- JavaMail通过发送SSL发送邮件
- javamail利用socks5代理发送邮件
- Spring中javaMail通过SMTP发送邮件
- 通过JavaMail在Html内发送邮件
- Spring中javaMail通过SMTP发送邮件
- javamail 通过163邮箱发送邮件
- 第三方工具通过javamail发送邮件
- Spring中javaMail通过SMTP发送邮件
- 通过spring实现javamail发送邮件功能
- 通过spring实现javamail发送邮件功能
- 通过 JavaMail 实现QQ邮件发送
- java发送邮件(javaMail通过SMTP发送邮件)
- 【javamail】 通过javamail用各种邮箱发送邮件!!
- 使用javamail.jar进行邮件发送包含代理设置
- 使用JavaMail通过SMTP协议发送局域网(内网)邮件
- javamail发送邮件
- Java 8的重要新特性以及未来版本的发展规划
- ie6与透明png
- MVC、MVP以及Model2
- 浅谈Java中的几种随机数
- c++ map hash_map unordered_map 比较
- javamail通过代理发送邮件
- monkeyrunner
- NSNotificationCenter 的详细说明
- win32编程基础知识
- Java程序员应该了解的10个面向对象设计原则
- android TextView 垂直自动滚动
- 可二次开发的USB键盘鼠标 Lao-UKM V3.1 (简介 应用举例)
- S2SH 框架 导入、导出 源码 , 工程导入即可运行
- 1911年到1921年中国历史大事件