[英]Can't Send Mail in Java
我试图用Java发送邮件,但我不断收到此错误“ com.sun.mail.smtp.SMTPSendFailedException:550无法满足SPF要求”,我搜寻了互联网,看是否有人在Java中遇到了这个问题,并找到了没有。 任何人都知道这个错误意味着什么? 我发送电子邮件的代码如下。
//Create session and message
Properties props = System.getProperties();
props.put("mail.smtp.user", user);
props.put("mail.smtp.password", password);
props.put("mail.smtp.auth", "false");
props.put("mail.smtp.host", mailhost);
javax.mail.Authenticator auth = null;
auth = new javax.mail.Authenticator() {
@Override
public javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(user, password);
}
};
session = Session.getInstance(props, auth);
Message msg = new MimeMessage(session);
//Set from,recipients,content and other stuff here
//...................
//Send the message
Transport.send(msg);
通过将“ mail.smtp.auth”属性设置为true并添加属性“ mail.smtp.ssl.enable”并将其设置为true来设法解决问题,然后最终代替使用下面的静态方法发送消息。
Transport.send(Message msg)
我在从会话对象获取的传输对象上使用实例方法来发送消息。
transport.sendMessage(Message msg, Address[] addresses)
下面是修改后的工作代码。
//Create session
Properties props = System.getProperties();
props.put("mail.smtp.user", user);
props.put("mail.smtp.password", password);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", mailhost);
props.put("mail.smtp.ssl.enable", "true");
javax.mail.Authenticator auth = null;
auth = new javax.mail.Authenticator() {
@Override
public javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(user, password);
}
};
session = Session.getInstance(props, auth);
//get transport object from session and connect to mail server
Transport tr = session.getTransport("smtp");
tr.connect(session.getProperty("mail.smtp.host"), session.getProperty("mail.smtp.user"), session.getProperty("mail.smtp.password"));
//create message and set from,recipients,content and other stuff here on the message object.
Message msg = new MimeMessage(session);
//..................
//...................
//Save and send the message
msg.saveChanges();
tr.sendMessage(msg, msg.getAllRecipients());
tr.close();
该链接确实帮助我解决了问题: http : //javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html
试试这个配置
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "false");
props.put("mail.smtp.port", port);
这些收件人的邮件服务器似乎已经对传入的邮件实施了SPF检查,并且您的域未声明SPF。
您可以轻松地从Gmail发送邮件。 在此逐步说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.