2014-12-07 2 views
4

Я пытаюсь отправить электронное письмо с электронной почтой (обменный сервер) и появиться для пользователя как это был послан другой адрес электронной почты с помощью JavaMail, я использую следующий код:com.sun.mail.smtp.SMTPSenderFailedException: 550 5.7.1 У клиента нет разрешений на отправку в качестве этого отправителя

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 = "<html><body> " + emailBody + " </body></html>"; 
      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); 
     } 
    } 

аутентификация производится с SENDEREMAIL, но я хочу, чтобы адрес электронной почты, чтобы появиться, как оно было отправлено из из пользователь, но я получаю следующее исключение:

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) 

, пожалуйста, сообщите, как исправить это исключение.

+0

Билл Шеннон прав, но на самом деле ответ - это @Barani r. – ATorras

ответ

3

Ваш сервер не позволит вам сделать это. Если это так, вы можете отправить спам как кому угодно. Если это ваш частный сервер, вы можете его перенастроить, чтобы это разрешить.

2

В msg.setFrom (новый InternetAddress (from)); «from» должен быть действительной настройкой электронной почты на SMTP-сервере. Вам может потребоваться связаться с администратором SMTP-сервера и получить для вас настройку идентификатора пользователя.

Смежные вопросы

 Смежные вопросы