这是控制台错误:DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
220 mx.google.com ESMTP c24sm9267873wam.7
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465EHLO PC-200909131652
250-mx.google.com at your service, [123.118.97.210]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35651584"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
cGFuZGFtZXN1cHBvcnRAZ21haWwuY29t
334 UGFzc3dvcmQ6
YW55aXRvbmd5dWFu
535-5.7.1 Username and Password not accepted. Learn more at                   
535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 c24sm9267873wam.7
javax.mail.AuthenticationFailedException
 at javax.mail.Service.connect(Service.java:306)
 at javax.mail.Service.connect(Service.java:156)
 at javax.mail.Service.connect(Service.java:105)
 at javax.mail.Transport.send0(Transport.java:168)
 at javax.mail.Transport.send(Transport.java:98)
 at com.pandame.mail.EmailSender.send(EmailSender.java:130)
 at com.pandame.mail.EmailSender.send(EmailSender.java:60)
 at com.pandame.mail.EmailSender.send(EmailSender.java:43)
 at com.pandame.web.action.user.FindPasswordAction.getpassword(FindPasswordAction.java:46)
 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 org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
 at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
 at com.pandame.web.action.privilege.PermissionProcessor.processActionPerform(PermissionProcessor.java:32)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at com.pandame.web.filter.SetCodeFilter.doFilter(SetCodeFilter.java:50)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619)这是Java类public class EmailSender {
 private static final String charset = "utf-8";
 private static final String defaultMimetype = "text/plain"; public static void main(String[] args) throws Exception {
  EmailSender.send(new String[] { "[email protected]" }, "客服邮件",
    "<b>熊猫迷</b>", null, "text/html");
 } /**
  * 发送邮件
  * 
  * @param receiver
  *            收件人
  * @param subject
  *            标题
  * @param mailContent
  *            邮件内容
  * @param mimetype
  *            内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
  */
 public static void send(String receiver, String subject,
   String mailContent, String mimetype) {
  send(new String[] { receiver }, subject, mailContent, mimetype);
 } /**
  * 发送邮件
  * 
  * @param receivers
  *            收件人
  * @param subject
  *            标题
  * @param mailContent
  *            邮件内容
  * @param mimetype
  *            内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
  */
 public static void send(String[] receivers, String subject,
   String mailContent, String mimetype) {
  send(receivers, subject, mailContent, null, mimetype);
 } /**
  * 发送邮件
  * 
  * @param receivers
  *            收件人
  * @param subject
  *            标题
  * @param mailContent
  *            邮件内容
  * @param attachements
  *            附件
  * @param mimetype
  *            内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
  */
 public static void send(String[] receivers, String subject,
   String mailContent, File[] attachements, String mimetype) {
  Properties props = new Properties();
  props.put("mail.smtp.host", "smtp.gmail.com");// Smtp服务器地址
  props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");    
        props.setProperty("mail.smtp.socketFactory.fallback", "false");    
        props.setProperty("mail.smtp.port", "465");    
        props.setProperty("mail.smtp.socketFactory.port", "465");  
  props.put("mail.smtp.auth", "true");// 需要校验
  Session session = Session.getDefaultInstance(props,
    new Authenticator() {
     protected PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication([email protected],
        "个人密码此处未写!!");// 登录用户名/密码
     }
    });
  session.setDebug(true);
  try {
   MimeMessage mimeMessage = new MimeMessage(session);
   mimeMessage.setFrom(new InternetAddress("[email protected]"));// 发件人邮件   InternetAddress[] toAddress = new InternetAddress[receivers.length];
   for (int i = 0; i < receivers.length; i++) {
    toAddress[i] = new InternetAddress(receivers[i]);
   }
   mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);// 收件人邮件
   mimeMessage.setSubject(subject, charset);   Multipart multipart = new MimeMultipart();
   // 正文
   MimeBodyPart body = new MimeBodyPart();
   // body.setText(message, charset);不支持html
   body.setContent(mailContent, (mimetype != null
     && !"".equals(mimetype) ? mimetype : defaultMimetype)
     + ";charset=" + charset);
   multipart.addBodyPart(body);// 发件内容
   // 附件
   if (attachements != null) {
    for (File attachement : attachements) {
     MimeBodyPart attache = new MimeBodyPart();
     // ByteArrayDataSource bads = new
     // ByteArrayDataSource(byte[],"application/x-any");
     attache.setDataHandler(new DataHandler(new FileDataSource(
       attachement)));
     String fileName = getLastName(attachement.getName());
     attache.setFileName(MimeUtility.encodeText(fileName,
       charset, null));
     multipart.addBodyPart(attache);
    }
   }
   mimeMessage.setContent(multipart);
   // SimpleDateFormat formcat = new SimpleDateFormat("yyyy-MM-dd");
   mimeMessage.setSentDate(new Date());// formcat.parse("2010-5-23")
   Transport.send(mimeMessage);
  } catch (Exception e) {
   e.printStackTrace();
  }
 } private static String getLastName(String fileName) {
  int pos = fileName.lastIndexOf("\\");
  if (pos > -1) {
   fileName = fileName.substring(pos + 1);
  }
  pos = fileName.lastIndexOf("/");
  if (pos > -1) {
   fileName = fileName.substring(pos + 1);
  }
  return fileName;
 }

解决方案 »

  1.   

    at com.pandame.web.action.privilege.PermissionProcessor.processActionPerform(PermissionProcessor.java:32)
    这里报错了吧
      

  2.   


    java类为什么不写成代码形式的, 看起来好不舒服..
      

  3.   

    说的很清楚了。 用户名或密码不对。
      protected PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication([email protected],
      "个人密码此处未写!!");// 登录用户名/密码
      }
      });"个人密码此处未写!!" 改成你的密码了吧?
      

  4.   

    给个例子工参考
     http://mybeautiful.javaeye.com/blog/746812
      

  5.   

    protected PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication([email protected],
      "个人密码此处未写!!");// 登录用户名/密码
      }
    这里的密码我公布了 是我程序的啊  我邮箱,我隐私。。
      

  6.   

    删除了 props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");   
      props.setProperty("mail.smtp.socketFactory.fallback", "false");   
      props.setProperty("mail.smtp.port", "465");   
      props.setProperty("mail.smtp.socketFactory.port", "465");   
    然后这里的props.put("mail.smtp.host", "smtp.gmail.com");// Smtp服务器地址
    改为:props.put("mail.smtp.host", "smtp.163.com");// Smtp服务器地址