Отправка почты без аутентификации с использованием 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.