title: javax.mail.AuthenticationFailedException: 535 authentication failed (#5.7.1)
body: <p>i am making an auto send email java project using javamail api. when i send this mail using smtp.gmail.com host, it works. But when i use my own host server mail.sitename.com...it shows exception..my username and password are right. Please anyone help me to sort out this problem...
  Exception is:-</p>
  
  <pre><code>    javax.mail.AuthenticationFailedException: 535 authentication failed (#5.7.1)
  
      at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
      at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
      at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
      at javax.mail.Service.connect(Service.java:317)
      at javax.mail.Service.connect(Service.java:176)
      at javax.mail.Service.connect(Service.java:125)
      at javax.mail.Transport.send0(Transport.java:194)
      at javax.mail.Transport.send(Transport.java:124)
      at com.zenga.servlet.MailNotification.sendMail(MailNotification.java:130)
      at com.zenga.servlet.MailNotification.doPost(MailNotification.java:45)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  </code></pre>
  
  <p>Codes:---</p>
  
  <p>a) i am using DAO pattern for data fetching for to(email id ) purpose
  b) a jsp file to take start and limit to fetch no of connection to those i am gonna send emails..
  c) Servlet file is given below...</p>
  
  <pre><code>package com.zenga.servlet;
  
  import java.io.*;
  import java.security.GeneralSecurityException;
  import java.util.*;
  import com.sun.mail.util.MailSSLSocketFactory;
  import com.zenga.dao.DaoFactory;
  import javax.servlet.ServletException;
  import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import javax.mail.*;
  import javax.mail.internet.*;
  
  /**
   * Servlet implementation class send
   */
  @WebServlet("/send")
  public class MailNotification extends HttpServlet {
      private static final long serialVersionUID = 1L;
  
      @SuppressWarnings("unchecked")
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          // TODO Auto-generated method stub
  
          HashMap&lt;String, String&gt;list =   new HashMap&lt;String, String&gt;();
          Set&lt;?&gt; set      =   null;
          Iterator&lt;?&gt; itr =   null;
          int start   =   0;
          int limit   =   0;
          Map.Entry&lt;String, String&gt; me = null;
          try {
              DaoFactory dao  =   DaoFactory.getDao();
              start   =   Integer.parseInt(request.getParameter("start"));
              limit   =   Integer.parseInt(request.getParameter("end"));
              list    =   dao.insertLimit(start,limit);
              set     =   list.entrySet();
              itr     =   set.iterator();
  
              while(itr.hasNext()) {
                  me  =   (Map.Entry&lt;String, String&gt;)itr.next();
                  sendMail(me.getKey(),me.getValue(),request,response);
              }
          } catch (Exception e) {
  
          }
  
      }
  
      private void sendMail(String toUsername, String to,HttpServletRequest request,HttpServletResponse response) throws IOException, GeneralSecurityException {
  
         final String from        =   "xyz@sitename.com";
         final String subject     =   "a subject";
         final String password    =   "password";
         final String host        =   "mail.sitename.com";
           String msg         =    getMessage(toUsername);
  
              //Set the host SMTP address
  
                    /*MailSSLSocketFactory socketFactory= new MailSSLSocketFactory();
              socketFactory.setTrustAllHosts(true);
  
              Properties properties=System.getProperties();
              properties.put("mail.smtp.host", host);
              properties.put("mail.smtp.user", from);
              properties.put("mail.smtp.password", password);
              //properties.put("mail.smtp.starttls.enable","true");
              properties.put("mail.smtp.ssl.socketFactory", socketFactory);
               properties.put("mail.smtp.EnableSSL.enable","true");
  
  
          //  properties.put("mail.smtp.ssl.enable","false");
              properties.put("mail.smtp.ssl.trust",host);
              properties.put("mail.protocol.ssl.trust", host);
              properties.put("mail.smtp.socketFactory.port", "587");
                      properties.put("mail.smtp.socketFactory.class",
                      "javax.net.ssl.SSLSocketFactory");
              properties.put("mail.smtp.port", "587");
              properties.put("mail.smtp.auth", "true");
              */ 
  
              Properties properties=System.getProperties();
              properties.put("mail.smtp.host",host);
              properties.put("mail.smtp.user",from);
              properties.put("mail.smtp.password",password);
              properties.put("mail.smtp.port","587");
              properties.put("mail.smtp.auth","true");
          //  properties.put("mail.smtp.starttls.enable","true");
                  properties.put("mail.smtp.ssl.enable","false");
                  properties.put("mail.smtp.starttls.enable","false");
  
              Authenticator auth = new Authenticator(){
                  public PasswordAuthentication getPasswordAuthentication() {
                      return new PasswordAuthentication(from,password);
                  }
              };
              Session session=Session.getDefaultInstance(properties,auth);
              response.setContentType("text/html");
              try{
                  // create a message
  
                  MimeMessage message=new MimeMessage(session);
  
                  // set the from and to address
                //  InternetAddress addressFrom = new InternetAddress(from);
                  message.setFrom(new InternetAddress(from));
                  //InternetAddress addressTo   = new InternetAddress(to);
                  message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
  
                  // Setting the Subject and Content Type
                  message.setSubject(subject);
  
                  // create and fill the first message part
                  MimeBodyPart msgBodypart = new MimeBodyPart();
  
                  msgBodypart.setText(msg,"ascii","hmtl");
  
  
                  // create the Multipart and add its parts to it
                  Multipart multipart=new MimeMultipart();
                  multipart.addBodyPart(msgBodypart);
                  // add the Multipart to the message
                  message.setContent(multipart);
                  // set the Date: header
                  message.setSentDate(new Date());
  
                          Transport.send(message);
                          success++;
  
  
              }
              catch(MessagingException me)
              { 
                  failed++;
                  me.printStackTrace();
              }
       }
  
  
  
      /**
       * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
       */
  }
  </code></pre>
  
  <p>I have tried everything that is in comment as well but nothing worked. i read many stackoverflow examples and no one is solving it correctly.</p>