JavaxException Неизвестный SMTP-хост Исключение: mail.gmail.com - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь отправить почту, используя код Java.Код работает нормально при запуске на моем персональном компьютере.Но в офисной сети появляется исключение неизвестного хоста SMTP.Также мой офисный компьютер не может пропинговать smtp.gmail.com.Брандмауэр ПК также закрыт.Есть ли другой способ установить соединение?Я также предоставляю мой код ниже для справки.

mport javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.Authenticator;

public class otp {    
    String d_email = "email@gmail.com",
            d_password = "password",
            d_uname="uname",//your email password
            d_host = "mail.outlook.com",
            d_port = "587",
            m_to = "target@gmail.com", // Target email address
            m_subject = "Testing Mail programs",
            m_text = "Hey, this is a test email.";

    public otp() {
        Properties props = new Properties();
        props.put("mail.smtp.user", d_email);
        props.put("mail.smtp.host", d_host);
        props.put("mail.smtp.port", d_port);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.debug", "true");
        props.put("mail.smtp.socketFactory.port", d_port);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        try {
            Authenticator auth = new SMTPAuthenticator();
            Session session = Session.getInstance(props,auth); 
            session.setDebug(true);
            MimeMessage msg = new MimeMessage(session);
            msg.setText(m_text);
            msg.setSubject(m_subject);
            System.out.println(1);
            msg.setFrom(new InternetAddress(d_email));

            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));

            System.out.println(3);
            Transport transport = session.getTransport("smtp");
            transport.connect(d_host, Integer.valueOf(d_port),d_uname , d_password);
            transport.sendMessage(msg, msg.getAllRecipients());
            transport.close();

        Transport.send(msg);
        System.out.println("Message Sent succesfully");  
      } catch (Exception mex) {
            mex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        otp blah = new otp();
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {
     public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(d_email, d_password);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 04 января 2019

вы используете учетную запись Gmail, но вы указали хост Outlook, попробуйте следующий шаблон:

import java.util.Properties;

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 SendEmailUsingGMailSMTP {
   public static void main(String[] args) {
      // Recipient's email ID needs to be mentioned.
      String to = "xyz@gmail.com";//change accordingly

      // Sender's email ID needs to be mentioned
      String from = "abc@gmail.com";//change accordingly
      final String username = "abc";//change accordingly
      final String password = "*****";//change accordingly

      // >> gmail host
      String host = "smtp.gmail.com";

      Properties props = new Properties();
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.starttls.enable", "true");
      props.put("mail.smtp.host", host);
      props.put("mail.smtp.port", "587");

      // Get the Session object.
      Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
         protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
         }
      });

      try {
         // Create a default MimeMessage object.
         Message message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.setRecipients(Message.RecipientType.TO,
         InternetAddress.parse(to));

         // Set Subject: header field
         message.setSubject("Testing Subject");

         // Now set the actual message
         message.setText("Hello, this is sample for to check send "
            + "email using JavaMailAPI ");

         // Send message
         Transport.send(message);

         System.out.println("Sent message successfully....");

      } catch (MessagingException e) {
            throw new RuntimeException(e);
      }enter code here
   }
}
0 голосов
/ 03 января 2019

Полагаю, что вы находитесь за внутренним брандмауэром / прокси-сервером вашего офиса, очень часто всю внутреннюю сеть компании размещают за центральным брандмауэром или проверяют исходящие / входящие запросы сетей на трафик динамического прокси-сервера. .В этом случае вы можете проверить это в настройках прокси вашего компьютера. Internet Explorer (или любой браузер) -> настройки -> интернет-опция -> вкладка «Подключения» -> настройки локальной сети.

для гранулярного анализа, пожалуйста, приложите ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...