为什么Java MailSender无法识别目标电子邮件?
我有一个MailSender类,它有两个方法:为什么Java MailSender无法识别目标电子邮件?,java,Java,我有一个MailSender类,它有两个方法: private Session createSmtpSession(final String fromEmail, final String fromEmailPassword) { final Properties props = new Properties(); props.setProperty ("mail.host", "smtp.gmail.com"); props.setProperty("mail.smtp
private Session createSmtpSession(final String fromEmail, final String fromEmailPassword) {
final Properties props = new Properties();
props.setProperty ("mail.host", "smtp.gmail.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.port", "" + 587);
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty ("mail.transport.protocol", "smtp");
return Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, fromEmailPassword);
}
});
}
public void sendEmail(String subject, String fromEmail, String fromEmailPassword, String content, String toEmail){
Session mailSession = createSmtpSession(fromEmail, fromEmailPassword);
mailSession.setDebug (true);
try {
Transport transport = mailSession.getTransport ();
MimeMessage message = new MimeMessage (mailSession);
message.setSubject (subject);
message.setFrom (new InternetAddress (fromEmail));
message.setContent (content, "text/html");
message.addRecipient (Message.RecipientType.TO, new InternetAddress (toEmail));
transport.connect ();
transport.sendMessage (message, message.getRecipients (Message.RecipientType.TO));
}
catch (MessagingException e) {
System.err.println("Cannot Send email");
e.printStackTrace();
}
}
好的,上面代码的工作方式如下:
我有个人gmailmyEmail@gmail.com
&如果我想向目的地发送邮件,如aa@xyz.com从myEmail@gmail.com
,然后我需要呼叫发送电子邮件(主题,“myEmail@gmail.com,来自电子邮件密码,内容aa@xyz.com");代码>
但最近我从Godaddy购买了VPS&我正在使用Godaddy电子邮件(info@mydomain.com)所以我想发送smg到目的地的电子邮件,如aa@xyz.com从…起info@mydomain.com,然后我需要调用sendmail(主题,“info@mydomain.com,来自电子邮件密码,内容aa@xyz.com");代码>
但是我得到了错误,因为Godaddy使用端口25
因此,我在createSmtpSession
中更改了代码,如下所示:
props.setProperty ("mail.host", "smtp.mydomain.com");
props.setProperty("mail.smtp.port", "" + 25);
然而,这次我遇到了另一个问题
DEBUG SMTP: Sending failed because of invalid destination addresses
RSET
250 2.0.0 OK
DEBUG SMTP: MessagingException while sending, THROW:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 <aa@xyz.com> Recipient not found. <http://x.co/irbounce>
调试SMTP:由于目标地址无效,发送失败
RSET
250 2.0.0正常
发送时调试SMTP:MessaginException,引发:
javax.mail.SendFailedException:无效地址;
嵌套异常是:
com.sun.mail.smtp.SMTPAddressFailedException:找不到550 5.1.1收件人。
显然,aa@xyz.com
实际上是存在的,但是为什么会出现这样的错误:找不到收件人。
那么如何解决这个问题呢?我需要查看Godaddy电子邮件中的传出(SMTP)服务器(如smtpout.secureserver.net),现在它工作正常了
props.setProperty ("mail.transport.protocol", "smtps");
props.setProperty ("mail.smtps.host", "smtpout.secureserver.net");
props.setProperty("mail.smtps.auth", "true");
props.setProperty("mail.smtps.port", "" + 465);
你应该在GoDaddy上打开一张支持票。你需要与GoDaddy支持团队检查此问题。我需要告诉他们什么?他们中的许多人不懂Java