日期:2014-05-20  浏览次数:20807 次

Spring中利用SimpleMailMessage发邮件的一个问题.非XML配置.
我一个项目需要用到邮件功能.刚好这个项目是用spring+hibernate开发的.我想spring对javamail也进行了封装.就想顺便用一下.以前没有用过spring封装的javamail来进行发邮件.遇到了这样一个问题.而在网上查找相关内容,多是通过BAEN去配置.我想直接通过JAVA代码写好.不通过BAEN去注入.
请同仁们给予帮助.
下面是代码:
import java.util.Properties;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;

public class TestMail {
public static void main(String args[]) throws Exception {
JavaMailSenderImpl mail = new JavaMailSenderImpl();
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
mail.setHost("smtp.163.com");
mail.setPort(25);
mail.setJavaMailProperties(prop);
mail.setUsername("sjordancr@163.com");
mail.setPassword("xxxxxxxx");
SimpleMailMessage smm = new SimpleMailMessage();
smm.setTo("sjordancr@163.com");
smm.setFrom("sjordancr@163.com");
smm.setSubject("TEST");
smm.setText("发送内容TEST!");
mail.send(smm);
}
}

下面是异常:
Exception in thread "main" org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException
Caused by: javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:264)
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:373)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:291)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:277)
at TestMail.main(TestMail.java:21)


请各位高手给予帮助.小弟初来乍到.还请多多指教.多向大家学习了.谢谢.


------解决方案--------------------
顺便说一下.这个程序在不需要进行AUTH验证的邮件服务器上是可以成功发送邮件的.比如.我们公司内部的邮件服务器.
不过放到外部需要AUTH验证的服务器上就不行了.
还请大家多多指教.谢谢了.
------解决方案--------------------
我的错和这个一模一样...
兄弟.有解了吱一声..
QQ"28164113
------解决方案--------------------
先确认一下你的用户名和密码是否正确

163的验证比较严格
1.要设置mail.smtp.auth=true
2.发信人地址和登录邮箱地址必须相同
3.不能向自己发信