我有一个简单的javamail类来通过SMTP发送电子邮件 . 只要我只从一个地址发送电子邮件,它就可以工作 . 如果我尝试使用其他地址,则出于某种原因引发此异常:
com.sun.mail.smtp.SMTPSendFailedException: 550 5.1.0 Use your own address, please.
这是我的 class :
public class EmailSender {
private static final String HOST = "xxxx.xxxxxx.xx";
private static final String PORT = "xx";
public static boolean sendMail(String from, String to, String pass, String subject, String text){
Properties properties = new Properties();
properties.setProperty("mail.smtp.host", HOST);
properties.setProperty("mail.smtp.port", PORT);
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.user", from);
properties.setProperty("mail.password", pass);
Session session = Session.getDefaultInstance(properties, new CustomAuthenticator(from, pass));
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
message.setText(text);
Transport.send(message);
return true;
}catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
}
如果你想知道,CustomAuthenticator类看起来像这样:
public class CustomAuthenticator extends Authenticator{
private String user;
private String pw;
public CustomAuthenticator (String username, String password){
super();
this.user = username;
this.pw = password;
}
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user, pw);
}
}
2 回答
您的服务器不会让您使用不属于您的地址 . 根据您的服务器,可能有一种方法可以说服其他地址也是您的 . 通常,“您的”表示“与您登录时使用的帐户关联的地址” .
所以我发现解决方案是使用SMTPTransport类 .