Отправка почты без аутентификации с использованием Java Mail Api

Я следующий код для отправки почты без аутентификации. Java-код описан следующим образом.

final String frommail = "a@g.com"
 String toEmail = "b@gmail.com";

    Properties props = new Properties();
    props.put("mail.smtp.auth", PropertiesLoader.getPropertiesValue(MAIL_SMTP_AUTH));
    props.put("mail.smtp.host", PropertiesLoader.getPropertiesValue(MAIL_SMTP_HOST));
    props.put("mail.smtp.port", PropertiesLoader.getPropertiesValue(MAIL_SMTP_PORT));
    //enable authentication
    props.put(MAIL_SMTP_ENABLE, PropertiesLoader.getPropertiesValue(MAIL_SMTP_ENABLE));

    Session session = Session.getInstance(props);
    try {
        MimeMessage msg = new MimeMessage(session);
        //set message headers
        msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
        msg.addHeader("format", "flowed");
        msg.addHeader("Content-Transfer-Encoding", "8bit");
        msg.setFrom(new InternetAddress(frommail, EMAIL_FROM_NAME));
        // msg.setReplyTo(InternetAddress.parse(frommail, false));
        msg.setSubject(subject, "UTF-8");
        msg.setContent(body, MAIL_CONTENT_TYPE);
        msg.setSentDate(new Date());
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("pramilkprince@rediffmail.com", false));
        Transport.send(msg);
        logger.info("EMail Sent Successfully!!"); 

Но при отправке почты выдает следующее исключение

com.sun.mail.smtp.SMTPAddressFailedException: 554 5.7.1: доступ к ретрансляции запрещен на com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1862) на com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1118) на javax.mail.Transport.send0(Transport.java:254) на javax.mail.Transport.send(Transport.java:124) на com.gtl.gcc.util.SendEmail.sendEmailFromInfo(SendEmail).java:195) на com.gtl.gcc.util.SendEmail.createMailBodyAndSendMailForUpdateKYC(SendEmail.java:144)

если кто-нибудь есть идеи по этому поводу, пожалуйста, помогите

2 ответа

Как отметил @BillShannon, отправка через большинство SMTP-серверов потребует аутентификации из-за проблем со спамом.

Однако шлюзы MX для любого домена должны быть открыты по протоколу TCP 25 и для электронной почты без аутентификации.

Работая над Java, отправляйте электронную почту, избегая SMTP-сервера ретрансляции и отправляя непосредственно на сервер MX, я создал небольшой пример использования сервера MX целевого домена для прямой адресации.

Как указывалось ранее: если ваш отправляющий сервер не обратит DNS к домену, с которого вы отправляете, вы, скорее всего, будете заблокированы или прямо классифицированы как спам.

Удачи

Если вы хотите отправлять почту без аутентификации, вам нужно запустить собственный SMTP-сервер. Если он находится в общедоступном Интернете, он будет залит спамом, прежде чем вы сможете использовать его самостоятельно. Если он находится в вашей частной сети, вы можете заставить его работать. Например, Gmail определенно не позволит вам отправлять почту без аутентификации. Обратите внимание, что это абсолютно не связано с использованием JavaMail API.

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