代理未连接

时间:2016-08-23 12:20:10

标签: java proxy connection javamail ports

我有一个名为“NotifiationService”的类: @Service( “notificacionService”) public class NotificacionServiceImpl实现NotificacionService {

//servicio llama a repositorio
@Autowired
@Qualifier("notificacionService")
private NotificacionService notificacionService;

    @Override
    public void send(String to, String subject, String text) {

        //proxy
        Properties p = System.getProperties();
        p.setProperty("proxySet","true");
        p.setProperty("socksProxyHost","MYPROXY");
        p.setProperty("socksProxyPort","MYPORT");

        Properties props = new Properties();

        // smtp.gmail.com
        props.setProperty("mail.smtp.host", "smtp.gmail.com");

        // TLS
        props.setProperty("mail.smtp.starttls.enable", "false");

        // port
        props.setProperty("mail.smtp.port","465");

        //
        props.setProperty("mail.smtp.user", "reciever@gmail.com");


        props.setProperty("mail.smtp.auth", "true");



        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);

        MimeMessage message = new MimeMessage(session);

        try {

            message.setFrom(new InternetAddress("sender@gmail.com"));


            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));


            message.setSubject(subject);
            message.setText(text);

            //
            Transport t = session.getTransport("smtp");
            t.connect("sender@gmail.com","senderpassword");
            t.sendMessage(message,message.getAllRecipients());
            t.close();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

正如您所看到的,我尝试配置代理,因为计算机已连接到重定向流量的计算机。因此,即使添加了有关代理的所有规范,它仍然会给我一个错误说:

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
  nested exception is:
    java.net.SocketException: Permission denied: connect

我也尝试了不同的端口,如:25,485,587,没有响应,所以我认为这是代理问题。

为了能够找到有关已实现的代理的信息,我在控制台中输入了以下命令:

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "proxyserver"

并回复:

ProxyServer    REG_SZ    MYPROXY:MYPORT

如果我在cmd中键入:“ping google.com”,则表示无法访问

有没有办法能够将java与javamail连接到gmail并能够发送包含当前配置的电子邮件?

感谢。

3 个答案:

答案 0 :(得分:0)

如果在设置SOCKS属性后它无法正常工作,则很可能您的代理服务器只是一个Web代理服务器而不是SOCKS代理服务器。 JavaMail FAQ指向其他允许通过Web代理服务器隧道连接的软件。

答案 1 :(得分:0)

从JavaMail 1.6.2开始,您可以为Session对象设置代理身份验证属性以发送电子邮件。

请参阅以下文档链接。 https://javaee.github.io/javamail/docs/api/

以下属性是新引入的,可以与“代理身份验证”(基本)配合使用。

  

mail.smtp.proxy.host

     

mail.smtp.proxy.port

     

mail.smtp.proxy.user

     

mail.smtp.proxy.password

答案 2 :(得分:0)

至少要澄清关于https.proxySet = true和http.proxySet = true的用法的几点。

JDK-4632974 proxySet = false会被HttpURLConnection.getOutputStream忽略

“消除了对属性http.proxySet的使用,从而简化了测试 是否存在http.proxyHost属性。此属性存在至 JDK1.0.2,但在1996年因JDK1.1而被删除。”

换句话说,不要使用proxySet,因为它没有用。如今,这是不存在的Java系统属性。