最近公司须要开发一个自定义邮箱功能,上网查询一下,利用163邮箱发送邮件。java
因为163 的反垃圾机制,(坑爹机制。)spring
通常出现 554有在1)测试中用了test,测试,关键字在主题或者内容里面。数组
可是我遇到的状况是这样的:相同的代码,本地环境运行能发送邮件成功(邮件内容也是同样的)而测试环境就不能。服务器
而后我启用debug模式。测试
EHLO tclserver-124-251-36-10.tcl.opi.com //问题在这里 。。。。。。。。。。。。 //里面不少内容,截取有用的部分做为说明
554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2 1473730639,please see http://mail.163.com/help/help_spam_16.htm?ip=124.251.36.10&hostid=smtp5&time=1473730639
DEBUG SMTP: got response code 554, with response: 554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2 1473730639,please see http://mail.163.com/help/help_spam_16.htm?ip=124.251.36.10&hostid=smtp5&time=1473730639
163邮箱服务器,因为我本地ip是没有域的,而测试环境是有域名的。而后就没有而后了spa
正确的的代码是debug
package com.fortunedr.thirdReport; import java.util.Date; import java.util.Properties; import javax.mail.MessagingException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; /** * 本类测试简单邮件 直接用邮件发送 * * @author Administrator * */
public class SingleMailSend { public static void main(String args[]) throws MessagingException { SingleMailSend a=new SingleMailSend(); a.sendMail(); } private void sendMail() throws MessagingException{ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // 设定mail server
senderImpl.setHost("smtp.163.com"); // 创建邮件消息
SimpleMailMessage mailMessage = new SimpleMailMessage(); // 设置收件人,寄件人 用数组发送多个邮件 // String[] array = new String[] {"sun111@163.com","sun222@sohu.com"}; // mailMessage.setTo(array);
mailMessage.setTo("1518737361@qq.com"); mailMessage.setFrom("your eamil"); mailMessage.setSubject(" 测试简单文本邮件发送! "); mailMessage.setText(" 测试个人简单邮件发送机制!!2222这是测试环境的代码 "+new Date()); mailMessage.setSentDate(new Date()); senderImpl.setPort(25); senderImpl.setUsername("your email"); // 根据本身的状况,设置username
senderImpl.setPassword("password"); // 根据本身的状况, 设置password
senderImpl.setDefaultEncoding("UTF-8"); Properties prop = new Properties(); // prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
prop.put("mail.smtp.timeout", "25000"); prop.put("mail.debug", "true");//便于调试
prop.put("mail.transport.protocol", "smtp"); /** * 关键代码, * 出现554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2 1473730639, * please see http://mail.163.com/help/help_spam_16.htm?ip=124.251.36.10 * &hostid=smtp5&time=1473730639 缘由是:ip与域名不匹配。 */ prop.put("mail.smtp.localhost", "mail.digu.com"); prop.put("mail.smtp.auth", "false"); prop.put("mail.smtp.port", "25"); senderImpl.setJavaMailProperties(prop); // 发送邮件
senderImpl.send(mailMessage); System.out.println(" 邮件发送成功.. "); } }
总结:关于163邮箱的554的故事(事故)还有不少。我也是百度了好久才获得这个答案。你们根据本身的状况而定。本篇文章只针对ip与域不匹配的状况调试