【发布时间】:2015-12-23 23:40:16
【问题描述】:
我正在按照代码发送邮件而无需身份验证。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)
如果有人对此有任何想法,请帮助
【问题讨论】:
-
抱歉,不清楚您要问什么。您想知道“中继访问被拒绝”是什么意思吗?或者您想在没有身份验证的情况下发送邮件? (在你的情况下显然行不通)
-
是的,我想在 java 中发送未经身份验证的邮件。为此,我必须对上述代码进行哪些更改?我还想找出异常的根本原因
-
好吧,对于初学者来说,你必须找到另一个不进行身份验证的 smtp 服务器。你在写某种垃圾邮件软件吗? :)
标签: jakarta-mail