Отправить письмо без аутентификации

1

Я пытаюсь разработать код, который позволяет отправлять письма с javamail без аутентификации.

        Properties properties = System.getProperties();
        properties.put("mail.smtp.auth", "false");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.smtp.host", "smtp.gmail.com");
        properties.put("mail.smtp.port", 587);
        Session session = Session.getInstance(properties);
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("[email protected]"));
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress("[email protected]"));
            message.setSubject("This is the Subject Line!");
            message.setText("This is actual message");
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }

Но когда я его выполню, я получаю это исключение

com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required.

Можно ли отправлять письма без аутентификации? Я что-то упускаю?

Теги:
authentication
email
javamail

2 ответа

0

Gmail специально не поддерживает несанкционированную отправку почты. На самом деле большинство открытых SMTP-серверов не работают (больше), потому что это приводит к чрезмерному злоупотреблению.

Вы можете найти публичный smtp, который не требует аутентификации, но они становятся редкими. Вы всегда можете запустить свой собственный smtp или просто... добавить аутентификацию.

Особенно, если вы используете gmail, вы можете просто передать свои учетные данные?

0

Попробуй это

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

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

    session.setDebug(true);

    MimeMessage message = new MimeMessage(session);

    message.setFrom(new InternetAddress(fromAddress));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));
    message.setSubject(subject);
    message.setContent(body, "text/html; charset=utf-8");
    message.setText(body);
    Transport.send(message);
  • 0
    Вам нужен пароль для аутентификации, но я ищу отправку писем без аутентификации. Я разрабатываю контактную форму, где клиент может отправить электронное письмо без указания пароля
  • 1
    Он не сможет сделать это, используя свой собственный адрес электронной почты; Вы можете отправлять такие письма из другой учетной записи, к которой у вашего приложения есть доступ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню