使用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("邮件发送!");

    }

}

文章转自庄周梦蝶  ,原文发布时间5.17

时间: 2024-09-13 16:17:22

使用javamail通过代理发送邮件的相关文章

Outlook代理发送邮件方法

Outlook代理发送邮件方法: 方法一(直接在客户端设置): 1. 以Mary用户身份登录,打开客户端outlook 2007,选择"工具"/"选项",如下图所示: 2. 在弹出的选项对话框中选择"代理",单击"添加"如下图示: 3. 在弹出的"添加用户"对话框中,选择允许代表当前用户发送邮件的用户,如在Mary账户中添加用户Jolin,则表示允许用户Jolin代表Mary发送邮件,如下图示: 4. 在弹

Spring整合javamail 用gmail发送邮件

Spring整合javamail成功之后,把大量的代码配置到spring的配置文件里了 ,从而降低了Javamail对邮箱.端口.协议.主题.内容-- 的耦合.在客户端上只需要调用一行代码就可以发送邮件了. 首先不需要往项目的lib里导入jar,但是需要在tomcat的lib里导入3个jar文 件activation.jar ,jspsmartupload.jar,mail.jar 导入这3个jar文件,这样 tomcat就不会报错了. SendManagerService .java pack

javamail truts-做后台发送邮件,用main测试好试,单合到项目中Action里就没用,也没报错

问题描述 做后台发送邮件,用main测试好试,单合到项目中Action里就没用,也没报错 import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.interne

javamail 多线程发送邮件出现邮件错乱的问题

问题描述 javamail 多线程发送邮件出现邮件错乱的问题 大家好,使用javamail 进行多线程发送邮件,发生了本来是发送给B的内容,却发送给了A,而且概率不小,代码大概如下,请大家帮忙分析一下,以下这个方法就是多线程调用的,邮件的一些信息是使用MailSend bean封装进来,在调用这个方法之前,有日志记录,都显示是正确的,但是就发生了错乱,高手们帮看看,再不解决就丢饭碗了,先谢谢了! /** @Description: 以HTML格式发送邮件 @param MailSend mail

android调用javamail发送邮件以及android调用intent发送邮件机制?

问题描述 android调用javamail发送邮件以及android调用intent发送邮件机制? android引用javamail包发送邮件时,javamail是调用android的intent进行通信吗?为什么android调用内部的intent发送邮件不需要登陆邮箱,而是可以直接指定目标邮箱直接发送数据.javamail在android发送邮件调用的什么机制呢?我被搞得好乱,求解 解决方案 Android 调用Gmail发送邮件 解决方案二: 不需要登陆邮箱,对方接收到邮件显示的发送方

使用java发送邮件出错

问题描述 使用java发送邮件出错 之前测试能发送邮件的,今天又试了一下出问题了....不知道什么原因,求大神 DEBUG: setDebug: JavaMail version 1.4.1 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth

站长应该如何选择域名注册商和代理

很多站长还没有分清注册商与代理的关系. 目前在国内常见的http://www.aliyun.com/zixun/aggregation/37893.html">国际域名注册商只有 www.35.com www.bizcn.com www.net.cn www.xinnet.com www.dns.com.cn www.zzy.cn www.ename.com www.enom.com 其他的都是代理商. 注册商下可以申请无数个代理商.因为目前国内代理商管理的不规范.基本上每家注册商下的代理

submit-form表单提交后ajax异步调用另一个url

问题描述 form表单提交后ajax异步调用另一个url ... ... 提交Submit function submitForm(){ if(_finst_taskComment.value==""){ alert("请填写审批意见"); }else{ document.getElementsByTagName("form")[0].submit(); } } 另一个url如http://........ 解决方案 function submi

SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件

原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail可以继续使用. SQLMail要求有应用程序编程接口(Extended Messaging Application Programming Interface,MAPI),安装新的Office时可能导致SQLMail失败. 数据库邮件更加安全.可靠,并且不需要MAPI.具有群集感知能力.可以自动重传发送失败的