title: com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 Client does not have permissions to send as this sender
body: <p>i am trying to send email from an <strong>application email</strong> (exchange server) and appear for the user as it was sent from <strong>another email</strong> using <strong>javamail</strong>, i am using the following code:</p>
  
  <pre><code>public void sendEmail(String from, String to, String subject, String emailBody) throws Exception {
  
          try {
  
              emailHostSMTPs = MessageProvider.getConfig("email.host.smtps");
              emailHostSMTP = MessageProvider.getConfig("email.host.smtp");
              emailProtocol = MessageProvider.getConfig("email.protocol");
              senderEmail = MessageProvider.getConfig("email.sender");
              senderPassword = MessageProvider.getConfig("email.password");
              senderUser = MessageProvider.getConfig("email.sender.user");
              MimeMessage msg = null;
  
              // BodyPart imgPart = new MimeBodyPart();
              MimeBodyPart mbp1 = null, mbp2 = null;
              MimeMultipart mp = new MimeMultipart();
  
              String html = "";
  
              Properties props = System.getProperties();
  
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.transport.protocol", emailProtocol);
              props.put("mail.smtps.ssl.checkserveridentity", "false");
              props.put("mail.smtp.ssl.trust", "*");
              props.put("mail.smtp.starttls.enable", "true");
              props.put("mail.smtp.host", emailHostSMTP);
              props.put("mail." + emailProtocol + ".auth", "true");
  
              Authenticator auth = new SMTPAuthenticator();
  
              MailSSLSocketFactory sf = new MailSSLSocketFactory();
              sf.setTrustAllHosts(true);
              props.put("mail.smtp.ssl.socketFactory", sf);
  
              Session session = Session.getInstance(props, auth);
              session.setDebug(true);
  
              mbp1 = new MimeBodyPart();
  
              html = "&lt;html&gt;&lt;body&gt; " + emailBody + " &lt;/body&gt;&lt;/html&gt;";
              mbp1.setContent(html, "text/html; charset=UTF-8");
              mp.addBodyPart(mbp1);
  
              msg = new MimeMessage(session);
  
              msg.setFrom(new InternetAddress(from));
              msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
              msg.setSubject(subject, "UTF-8");
              msg.setContent(mp);
  
              msg.setSentDate(new Date());
  
              Transport transport = session.getTransport(emailProtocol);
  
              transport.connect(senderEmail, senderPassword);
              transport.sendMessage(msg, msg.getAllRecipients());
  
          } catch (Exception ex) {
              throw ex;
          }
  
      }
  
      private class SMTPAuthenticator extends javax.mail.Authenticator {
  
          @Override
          public PasswordAuthentication getPasswordAuthentication() {
              String username = senderUser;
  
              String password = senderPassword;
              return new PasswordAuthentication(username, password);
          }
      }
  </code></pre>
  
  <p>the authentication is made with <strong>senderEmail</strong> but i want the email to appear as it was sent from the <strong>from</strong> user, but i am getting the following exception:</p>
  
  <pre><code>com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Client does not have permissions to send as this sender
  ;
    nested exception is:
      com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 Client does not have permissions to send as this sender
  
      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
      at com.dataserve.ecm.service.EmailService.sendEmail(EmailService.java:76)
      at com.dataserve.ecm.beans.GenericSearch.sendDocumentByEmail(GenericSearch.java:163)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
      at java.lang.reflect.Method.invoke(Method.java:611)
      at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:328)
      at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:341)
      at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
      at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
      at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
      at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
      at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
      at javax.faces.component.UICommand.broadcast(UICommand.java:315)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
      at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
      at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.filenet.ae.toolkit.server.servlet.filter.PostprocessorFilter.doFilter(PostprocessorFilter.java:38)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.filenet.ae.toolkit.server.servlet.filter.ContainerBasedFilter.doFilter(ContainerBasedFilter.java:218)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.filenet.ae.toolkit.server.servlet.filter.PreprocessorFilter.doFilter(PreprocessorFilter.java:91)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.filenet.ae.toolkit.server.servlet.filter.SecurityPluginFilter.doFilter(SecurityPluginFilter.java:164)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.filenet.ae.toolkit.server.servlet.filter.ThreadLocalCleanupFilter.doFilter(ThreadLocalCleanupFilter.java:50)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.dataserve.ecm.ui.CompitabilityFilter.doFilter(CompitabilityFilter.java:41)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:192)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:926)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1023)
      at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:895)
      at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:522)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:311)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:282)
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
      at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
      at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
      at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
      at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
      at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
      at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
      at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)
  </code></pre>
  
  <p>please advise how to fix this exception.</p>