Java-почта не работает в сети компании

Я разрабатываю настольное приложение для доступа к сети компании.

Все работает нормально, кроме библиотеки Java Mail

Это работает только тогда, когда я отключаю устройство от сети компании и подключаю его к обычному Wi-Fi, но как только я подключаюсь к сети компании, оно не отправляет электронную почту.

Как я могу решить проблему?

Электронная почта, которую я использую для java почты, является учетной записью Gmail.

Ниже приведен исходный код почтового класса:

public class Email {

    public void sendEmail(String from, String recipent, String title, String name, String textmsg, String emp_id) throws IOException {

        final String user = "******@gmail.com";
        final String password = "*****";

        String host = "mail.javatpoint.com";
        String to = recipent;

        Properties properties = System.getProperties();
        properties.put("mail.smtp.starttls.enable", "true");
        properties.setProperty("mail.smtp.host", "smtp.gmail.com");
        properties.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(properties,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(user, password);
                    }
                });

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user, "IT Communication Database"));

            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(to));
            message.setSubject(title);
            message.setContent("Below are the assets that were found for the following user: " + emp_id + "\n" + textmsg, "text/html");

            Transport.send(message);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
    }

    public void sendEmail(String from, String recipent, String title, String name, String textmsg, String search_word) throws IOException {

        final String user = "*****@gmail.com";
        final String password = "*****";

        String host = "mail.javatpoint.com";
        String to = recipent;

        Properties properties = System.getProperties();
        properties.put("mail.smtp.starttls.enable", "true");
        properties.setProperty("mail.smtp.host", "smtp.gmail.com");
        properties.put("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(properties,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(user, password);
                    }
                });

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user, "IT Communication Database"));

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

            Transport.send(message);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
    }
}

3 ответа

Решение

Проверьте, использует ли сеть вашей компании прокси. Если да, добавьте приведенный ниже код с прокси IP:port details:

properties.setProperty("proxySet","true");
properties.setProperty("socksProxyHost","(proxy IP)");
properties.setProperty("socksProxyPort","(proxy port)");

Образец ниже:

properties.setProperty("proxySet","true"); 
properties.setProperty("socksProxyHost","192.168.155.1");
properties.setProperty("socksProxyPort","1080");

Ваша компания заблокировала порт 25 на брандмауэре, чтобы предотвратить спам.

Обычный способ справиться с этим - использовать почтовый сервер вашей компании вместо Gmail.

Если вам нужно использовать прокси-сервер для выхода за пределы сети вашей компании, см. Этот раздел часто задаваемых вопросов по JavaMail.

Другие вопросы по тегам