1.同样的代码,同样的平台,使用普通126的邮箱账号+smtp地址可以成功发送邮件,但换成企业邮箱账号+smtp/pop则无法发送
2.所使用的企业邮箱账号正确,且使用smtp/pop配合outlook等软件可以正常发邮件,说明smtp/pop服务是开启的
3.无论smtp/pop服务是否开启,还是账号密码故意填错,统一报 javax.mail.AuthenticationFailedException这个异常,且没有英文解释,只有堆栈信息
-------------------------------------------------------
问题
1.javaMail是不是不支持企业邮箱?
2.如果是程序问题的话该如何改??
代码我就不贴了,老长一段我自己都没耐心看。
11 个解决方案
#1
javaMail是肯定支持企业邮箱的。
outlook等软件可以正常发邮件,说明smtp/pop服务是开启的 :
这个不见得吧:用javaMail发邮件的时候是直接访问 smtp服务器,而很多服务器是不直接提供smtp服务的,像163就只对付费用户提供smtp服务。
这个异常没见过。
outlook等软件可以正常发邮件,说明smtp/pop服务是开启的 :
这个不见得吧:用javaMail发邮件的时候是直接访问 smtp服务器,而很多服务器是不直接提供smtp服务的,像163就只对付费用户提供smtp服务。
这个异常没见过。
#2
回楼上,我用的就是163的付费企业邮箱
#3
/**
*
* @param from
* 发信人地址
* @param to
* 收信人地址
* @param subject
* 主题
* @param msg
* 正文
*
*/
public boolean sendMail(String from, String to, String subject, String msg) {
SimpleEmail email = new SimpleEmail();
// 邮件服务器
email.setHostName("smtp.163.com");
// 登录邮箱用户名和密码
email.setAuthentication("****", "****");
// 编码方式
email.setCharset("utf-8");
try {
email.setFrom(from);
email.addTo(to);
email.setSubject(subject);
email.setMsg(msg);
email.send();
log.error("==发送邮件成功,收件邮箱:" + to);
return true;
} catch (Exception e) {
log.error("==发送邮件失败,收件邮箱:" + to + "==", e);
}
return false;
}
可以发送邮件,但是不是企业用户,你在试试,我也是用163测试的
#4
楼主免费邮箱可以发
那楼主有别的收费邮箱么 换个别的试试看 看能不能发呢
#5
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx
#6
同意ls的看法。应该是没有加上认证。
另外,lz最好使用下面的方法打印出debug信息,便于查错。
另外,lz最好使用下面的方法打印出debug信息,便于查错。
javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null);
mailSession.setDebug(true);
#7
5楼的地址不错
学习了 那楼主的错误应该就是没有加上认证。
#8
感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步
Session mailSession = Session.getInstance(properties,myauth); 也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?
#9
我就是用这段代码发邮件的,当然没有问题,但是至少
email.setAuthentication("登陆邮箱", "登陆");
这里要改成你的实际的,要不然这么发?
在说了,我也不可能把我的邮箱和密码写上去不是吗?
#10
学习了
关于这点 以前不知道呢
#11
遇到同样的问题,lz是怎样解决的?
#1
javaMail是肯定支持企业邮箱的。
outlook等软件可以正常发邮件,说明smtp/pop服务是开启的 :
这个不见得吧:用javaMail发邮件的时候是直接访问 smtp服务器,而很多服务器是不直接提供smtp服务的,像163就只对付费用户提供smtp服务。
这个异常没见过。
outlook等软件可以正常发邮件,说明smtp/pop服务是开启的 :
这个不见得吧:用javaMail发邮件的时候是直接访问 smtp服务器,而很多服务器是不直接提供smtp服务的,像163就只对付费用户提供smtp服务。
这个异常没见过。
#2
回楼上,我用的就是163的付费企业邮箱
#3
/**
*
* @param from
* 发信人地址
* @param to
* 收信人地址
* @param subject
* 主题
* @param msg
* 正文
*
*/
public boolean sendMail(String from, String to, String subject, String msg) {
SimpleEmail email = new SimpleEmail();
// 邮件服务器
email.setHostName("smtp.163.com");
// 登录邮箱用户名和密码
email.setAuthentication("****", "****");
// 编码方式
email.setCharset("utf-8");
try {
email.setFrom(from);
email.addTo(to);
email.setSubject(subject);
email.setMsg(msg);
email.send();
log.error("==发送邮件成功,收件邮箱:" + to);
return true;
} catch (Exception e) {
log.error("==发送邮件失败,收件邮箱:" + to + "==", e);
}
return false;
}
可以发送邮件,但是不是企业用户,你在试试,我也是用163测试的
#4
楼主免费邮箱可以发
那楼主有别的收费邮箱么 换个别的试试看 看能不能发呢
#5
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx
#6
同意ls的看法。应该是没有加上认证。
另外,lz最好使用下面的方法打印出debug信息,便于查错。
另外,lz最好使用下面的方法打印出debug信息,便于查错。
javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null);
mailSession.setDebug(true);
#7
5楼的地址不错
学习了 那楼主的错误应该就是没有加上认证。
#8
感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步
Session mailSession = Session.getInstance(properties,myauth); 也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?
#9
我就是用这段代码发邮件的,当然没有问题,但是至少
email.setAuthentication("登陆邮箱", "登陆");
这里要改成你的实际的,要不然这么发?
在说了,我也不可能把我的邮箱和密码写上去不是吗?
#10
学习了
关于这点 以前不知道呢
#11
遇到同样的问题,lz是怎样解决的?