本人编写的一段用于发送邮件的代码不能使用企业邮箱发邮件,相关状信息下:
1.同样的代码,同样的平台,使用普通126的邮箱账号+smtp地址可以成功发送邮件,但换成企业邮箱账号+smtp/pop则无法发送
2.所使用的企业邮箱账号正确,且使用smtp/pop配合outlook等软件可以正常发邮件,说明smtp/pop服务是开启的
3.无论smtp/pop服务是否开启,还是账号密码故意填错,统一报 javax.mail.AuthenticationFailedException这个异常,且没有英文解释,只有堆栈信息
-------------------------------------------------------
问题
1.javaMail是不是不支持企业邮箱?
2.如果是程序问题的话该如何改??代码我就不贴了,老长一段我自己都没耐心看。

解决方案 »

  1.   

    javaMail是肯定支持企业邮箱的。outlook等软件可以正常发邮件,说明smtp/pop服务是开启的 :
    这个不见得吧:用javaMail发邮件的时候是直接访问 smtp服务器,而很多服务器是不直接提供smtp服务的,像163就只对付费用户提供smtp服务。这个异常没见过。
      

  2.   


    /**
     * 
     * @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测试的
      

  3.   

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

  4.   

    同意ls的看法。应该是没有加上认证。
    另外,lz最好使用下面的方法打印出debug信息,便于查错。
    javax.mail.Session mailSession = javax.mail.Session.getInstance(props, null);mailSession.setDebug(true);
      

  5.   

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

  6.   


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