Невозможно подключиться к Office365 для JavaEmailer - PullRequest
0 голосов
/ 06 октября 2018

Я нахожусь на VPN, но я не верю, что это проблема здесь.Я настроил свой брандмауэр, чтобы разрешить исходящие соединения, и мой McAfee игнорировал как Eclipse, так и Java.

Я знаю, это выглядит как дубликат.Я обещаю, что нет.Я пробовал буквально ВСЕ, что я обнаружил в Переполнении стека за последние 3 дня, и эта штука все еще дает мне:

javax.mail.MessagingException: Could not connect to SMTP host: 
smtp.live.com, port: 587;
  nested exception is:
    java.net.SocketException: Permission denied: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
    at javax.mail.Service.connect(Service.java:275)
    at edu.montana.fs.MailAttachment.<init>(MailAttachment.java:67)
    at edu.montana.fs.MainCall.main(MainCall.java:90)
Caused by: java.net.SocketException: Permission denied: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
    ... 4 more

Это мой почтовый код (с удаленными письмами и pwd):

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailAttachment {
    public MailAttachment(String filepath, int errorCount, int recordCount)    {

        final String SMTP_HOST = "smtp.live.com";
        final String SMTP_PORT = "587";
        final String SMTP_USER = "user@outlook.com";
        final String SMTP_PWD = "password";

        final String from = "server@institute.edu";
        final String to = "user@institute.edu";

        final String subject = "Test";
        final String messageContent = "Testing Message";

        final Properties config = new Properties();
        config.put("mail.smtp.user", SMTP_USER);
        config.put("mail.smtp.pwd", SMTP_PWD);
        config.put("mail.smtp.ssl.trust", SMTP_HOST);
        config.put("mail.smtp.port", SMTP_PORT);
        config.put("mail.smtp.starttls.enable", "true");
        config.put("mail.smtp.auth", "true");

        Authenticator auth = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(SMTP_USER, SMTP_PWD);
            }
        };

        Session session = Session.getInstance(config, auth);

        try {
            final Message message = new MimeMessage(session);
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setFrom(new InternetAddress(from));
            message.setSubject(subject);
            message.setText(messageContent);
            message.setSentDate(new Date());
            Transport transport = session.getTransport("smtp");
            transport.connect(SMTP_HOST, 587, SMTP_USER, SMTP_PWD);
            transport.sendMessage(message, message.getAllRecipients());
            System.out.println("Mail successfully sent: " + to);
            transport.close();
            //Transport.send(message);
        } catch (final MessagingException ex) {
            ex.printStackTrace();
        }
    }

}

Есть ли что-то очевидное, что я не правильно поступаю?Я прошел как минимум 5 полных реконструкций этого класса, и я открыт для предложений.Заранее спасибо.

1 Ответ

0 голосов
/ 15 марта 2019

Чтобы все знали, проблема заключалась в сетевом брандмауэре / безопасности.Очевидно, что подключение через VPN не давало Java-программе достаточных привилегий для запуска электронной почты, даже когда у меня есть доступ на уровне сетевого администратора, связанный с моей учетной записью Active Directory (из-за чего у меня работает VPN-доступ).Я смог проверить это на сервере с физическим местоположением в офисе и проводным подключением к сети.

...