javaMail使用企业邮箱发邮件失败的问题

时间:2022-04-15 19:00:13
本人编写的一段用于发送邮件的代码不能使用企业邮箱发邮件,相关状信息下:
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服务。

这个异常没见过。

#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


引用 3 楼 loginout 的回复:
Java code/**
     * 
     *@param from
     *            发信人地址
     *@param to
     *            收信人地址
     *@param subject
     *            主题
     *@param msg
     *            正文
     **/publicboolean 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);returntrue;
        }catch (Exception e) {
            log.error("==发送邮件失败,收件邮箱:"+ to+"==", e);
        }returnfalse;
    }
可以发送邮件,但是不是企业用户,你在试试,我也是用163测试的


楼主免费邮箱可以发  

那楼主有别的收费邮箱么   换个别的试试看  看能不能发呢

#5


有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx

#6


同意ls的看法。应该是没有加上认证。
另外,lz最好使用下面的方法打印出debug信息,便于查错。


javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null);

mailSession.setDebug(true);

#7


引用 5 楼 swandragon 的回复:
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx


5楼的地址不错

学习了  那楼主的错误应该就是没有加上认证。

#8


感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步 Session mailSession = Session.getInstance(properties,myauth); 也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?

#9


引用 8 楼 dinghun8leech 的回复:
 回3楼,这段代码能发邮件么?连密码都不用输?


我就是用这段代码发邮件的,当然没有问题,但是至少
email.setAuthentication("登陆邮箱", "登陆");
这里要改成你的实际的,要不然这么发?
在说了,我也不可能把我的邮箱和密码写上去不是吗?

#10


引用 8 楼 dinghun8leech 的回复:
感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步Session mailSession = Session.getInstance(properties,myauth);也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?


学习了 
关于这点 以前不知道呢

#11


遇到同样的问题,lz是怎样解决的?

#1


javaMail是肯定支持企业邮箱的。

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


引用 3 楼 loginout 的回复:
Java code/**
     * 
     *@param from
     *            发信人地址
     *@param to
     *            收信人地址
     *@param subject
     *            主题
     *@param msg
     *            正文
     **/publicboolean 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);returntrue;
        }catch (Exception e) {
            log.error("==发送邮件失败,收件邮箱:"+ to+"==", e);
        }returnfalse;
    }
可以发送邮件,但是不是企业用户,你在试试,我也是用163测试的


楼主免费邮箱可以发  

那楼主有别的收费邮箱么   换个别的试试看  看能不能发呢

#5


有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx

#6


同意ls的看法。应该是没有加上认证。
另外,lz最好使用下面的方法打印出debug信息,便于查错。


javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null);

mailSession.setDebug(true);

#7


引用 5 楼 swandragon 的回复:
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的
你写认证类了吗?
http://blog.csdn.net/tianting_wx/archive/2008/06/13/2543015.aspx


5楼的地址不错

学习了  那楼主的错误应该就是没有加上认证。

#8


感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步 Session mailSession = Session.getInstance(properties,myauth); 也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?

#9


引用 8 楼 dinghun8leech 的回复:
 回3楼,这段代码能发邮件么?连密码都不用输?


我就是用这段代码发邮件的,当然没有问题,但是至少
email.setAuthentication("登陆邮箱", "登陆");
这里要改成你的实际的,要不然这么发?
在说了,我也不可能把我的邮箱和密码写上去不是吗?

#10


引用 8 楼 dinghun8leech 的回复:
感谢5楼,找到错误了,田婷的blog我在编写这段代码时就看过了,也意识到要有个验证类,但是经过对比后发现少了一步Session mailSession = Session.getInstance(properties,myauth);也就是要把验证对象的实例加载到mailSession中。加了这句之后果然就能发了。
回6楼,这个方法不错,感谢提供。
回3楼,这段代码能发邮件么?连密码都不用输?


学习了 
关于这点 以前不知道呢

#11


遇到同样的问题,lz是怎样解决的?