解决方案 »

  1.   

    gmail 在大陆被封了,你没事用gmail做什么测试
      

  2.   

    给楼主一个IP翻墙测试下看看:
    210.242.125.98改hosts会吧?
    Good luck!
      

  3.   

    你没其他邮箱吗?
    看异常是认证失败了,换个其他邮箱试试吧,Gmail本来也登陆不上了!
      

  4.   

    gmail服务器在美国,中国的站点已经被撤掉了,你用程序连接美国的gmail服务器需要google api Key
      

  5.   

    服务器认证失败了,你可以参考下面这个例子:
    public class EmailService
    {
    private Log log = LogFactory.getLog(EmailService.class);
    @SuppressWarnings("static-access")
    public boolean sendEmail(String to,String subject,String content)
    {
    EmailServiceConfig config=EmailServiceConfig.getInstance();
    Authenticator auth=new MyAuthenticator(config.getAccount(),config.getPasswd());
    Session mailSession = Session.getInstance(
    config.getEmailProperties(),
    auth
    ); 

    MimeMessage message = null;//保存邮件信息
    try
    {
    InternetAddress fromAddress = new InternetAddress(config.getFromAddress());
    InternetAddress toAddress = new InternetAddress(to);
    message= new MimeMessage(mailSession);  

    message.setFrom(fromAddress);  
    message.addRecipient(RecipientType.TO, toAddress);  
    message.setSentDate(new Date());  
    message.setSubject(subject);  
    message.setText(content);   }
    catch (AddressException e)
    {
    log.error("系统发送email失败,错误的email地址["+config.getAccount()+","+to+"]",e);
    }
    catch (MessagingException e)
    {
    log.error("组件系统email失败",e);
    }  

     //发送邮件
    try
    {
    //Transport transport= mailSession.getTransport("smtp");
    //transport.connect(config.getHost(),config.getAccount(), config.getPasswd());

    Transport.send(message); 
    //关闭连接 }
    catch (NoSuchProviderException e)
    {
    log.error("邮件服务器错误,无法发送邮件",e);
    }
    catch (MessagingException e)
    {
    log.error("发送邮件失败",e);
    }   return true;
    }class MyAuthenticator extends Authenticator
    {
    String userName = "";
    String password = ""; public MyAuthenticator()
    { } public MyAuthenticator(String userName, String password)
    {
    this.userName = userName;
    this.password = password;
    } protected PasswordAuthentication getPasswordAuthentication()
    {
    return new PasswordAuthentication(userName, password);
    }
    }
      

  6.   

    EmailServiceConfig是我自己封装的一个类,里面放了用户名密码,服务器地址等信息
      

  7.   

    关键是
    Session mailSession = Session.getInstance(
    config.getEmailProperties(),
    auth
    ); 这其中的auth要等于true
      

  8.   

    我以前做过Gmail的实验 貌似端口是587 还是多少来着 忘了  用的是tls加密
    props.put("mail.smtp.starttls.enable","true")
      

  9.   

    我也不想啊,本来做好的可以兼容各类邮箱结果发现公司要求要gmail邮箱,说有ssl协议安全,然后我怎么改都发不了
      

  10.   

    用你的代码测试了一下,还是一样的错误
    严重: 发送邮件失败
    javax.mail.SendFailedException: Sending failed;
      nested exception is:
    class javax.mail.AuthenticationFailedException
    at javax.mail.Transport.send0(Transport.java:218)
    at javax.mail.Transport.send(Transport.java:80)
    at com.action.test.send(test.java:78)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.filter.EncodingFilter.doFilter(EncodingFilter.java:28)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:619)
      

  11.   

    我也不想啊,本来做好的可以兼容各类邮箱结果发现公司要求要gmail邮箱,说有ssl协议安全,然后我怎么改都发不了你先用浏览器开一下gmail.com再说吧
      

  12.   

    除了uc,其他浏览器进不去https://mail.google.com,是这个原因吗?怎么破
      

  13.   

    我也不想啊,本来做好的可以兼容各类邮箱结果发现公司要求要gmail邮箱,说有ssl协议安全,然后我怎么改都发不了你先用浏览器开一下gmail.com再说吧
    除了uc,其他打不开https://mail.google.com,进不去邮箱
      

  14.   

    终于发现原因了,是安全验证问题,在gmail邮箱里:设置-账号和导入-其他Google账户设置-安全性-近期活动-查看所有事件,看到登录访问都被阻止了,如图点击异常活动那里的更改-查看设置-把不够安全的应用的访问权限设置为启用就解决了这个问题,谢谢大家了。