Как получить фактический ответ от SMTP?

Для получения фактического ответа от SMTP сервера в Java, вы можете использовать библиотеку JavaMail. JavaMail предоставляет классы и методы для работы с электронной почтой, включая отправку писем по протоколу SMTP.

Вот пример кода, который позволяет отправить письмо при помощи JavaMail и получить фактический ответ от SMTP сервера:

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class SMTPExample {
    public static void main(String[] args) {
        // Настройки для подключения к SMTP серверу
        String host = "smtp.example.com";
        String username = "your_username";
        String password = "your_password";
        int port = 587; // порт SMTP сервера (например, 587 для Gmail)

        // Создание свойств для подключения к SMTP серверу
        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", port);

        // Создание сессии для подключения к SMTP серверу с указанными свойствами
        Session session = Session.getInstance(props,
        new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        try {
            // Создание объекта сообщения
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("[email protected]"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
            message.setSubject("Test Email");
            message.setText("This is a test email.");

            // Отправка письма
            Transport.send(message);

            // Получение фактического ответа от SMTP сервера
            Transport transport = session.getTransport("smtp");
            transport.connect(host, port, username, password);
            int responseCode = transport.getLastReturnCode();
            String responseMessage = transport.getLastServerResponse();

            System.out.println("Response Code: " + responseCode);
            System.out.println("Response Message: " + responseMessage);

            // Закрытие соединения с SMTP сервером
            transport.close();

            System.out.println("Email sent successfully!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

В этом примере мы создаем свойства для подключения к SMTP серверу, используя указанный хост, имя пользователя, пароль и порт. Затем мы создаем сессию с помощью этих свойств и аутентификационных данных.

Далее мы создаем объект сообщения, устанавливаем отправителя, получателя, тему и текст сообщения. Затем мы отправляем сообщение при помощи метода Transport.send().

После отправки мы получаем фактический ответ от SMTP сервера, вызывая метод Transport.getLastReturnCode() для получения кода ответа и метод Transport.getLastServerResponse() для получения текста ответа. Пример выводит код и текст ответа на консоль.

Наконец, мы закрываем соединение с SMTP сервером при помощи метода Transport.close().

Обратите внимание, что в этом примере используются фиктивные значения для хоста, имени пользователя и пароля. Вам необходимо заменить их на реальные значения для вашего SMTP сервера.