我使用以下代码使用java发送电子邮件
function send(){
String host1 = "domainname";
String to = "[email protected]";
String from="[email protected]";
String subject = "test mail";
String messageText = "test content";
boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.host", host1);
props.put("mail.transport.protocol", "smtp");
Authenticator authenticator = new Authenticator();
Session mailSession = Session.getInstance(props, authenticator);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
//msg.setSentDate(new Date());
msg.setContent(messageText,"text/html");
Transport.send(msg);
}
private class Authenticator extends javax.mail.Authenticator implements java.io.Serializable {
private PasswordAuthentication authentication;
public Authenticator() {
String username = "[email protected]";
String password = "**********";
authentication = new PasswordAuthentication(username, password);
}
protected PasswordAuthentication getPasswordAuthentication() {
return authentication;
}
}
这工作正常。但现在我需要更改发件人地址“[email protected]”,我必须使用与以前相同的身份验证详细信息发送邮件。如果我只是使用相同的身份验证更改我的地址我收到以下错误:
exceptionjavax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550-Verification failed for <[email protected]>
550-No Such User Here"
550 Sender verify failed
是否可以发送具有相同身份验证且与地址不同的邮件.....
任何人都可以帮助我找到问题.....
我怀疑是有一些配置或策略阻止from
地址未注册的传出邮件。如果您遇到问题是配置用户可以回复的地址(并且应该与您要验证的地址不同),那么您可以设置reply-to
标头。