2014-09-02 4 views
-1

Я пытаюсь отправить HTML-страницу с помощью JavaMail из класса сервлетаКак отправить Html Email с помощью Javamail?

Servlet

package com.kunal.servlet; 

import java.io.IOException; 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.activation.*; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class CartCheckout 
*/ 
@WebServlet("/CartCheckout") 
public class CartCheckout extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public CartCheckout() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     try 
     { 
      Properties props = new Properties(); 
      props.put("mail.smtp.host", "smtp.gmail.com"); 
      props.put("mail.smtp.socketFactory.port", "465"); 
      props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
      props.put("mail.smtp.auth", "true"); 
      props.put("mail.smtp.port", "465"); 

      Session session = Session.getDefaultInstance(props, 
        new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication("user","password"); 
        } 
         }); 

      Message message=new MimeMessage(session); 
      message.setFrom(new InternetAddress("user")); 
      message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("Receiver")); 
      message.setSubject("Agro Test"); 
      message.setContent(message.setContent("<html>\n" + 
        "<body>\n" + 
        "\n" + 
        "<a href=\"http://kunal.blogspot.com\">\n" + 
        "This is a link</a>\n" + 
        "\n" + 
        "</body>\n" + 
        "</html>", "text/html"), "text/html"); 
      Transport.send(message); 
      System.out.println("message sent...."); 
     } 
     catch(MessagingException ex) 
     { 
      ex.printStackTrace(); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 

} 

StackTrace

Sep 02, 2014 1:48:14 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 
Sep 02, 2014 1:48:14 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Agro' did not find a matching property. 
Sep 02, 2014 1:48:14 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-nio-8080"] 
Sep 02, 2014 1:48:14 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Sep 02, 2014 1:48:14 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-nio-8009"] 
Sep 02, 2014 1:48:14 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Sep 02, 2014 1:48:14 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 639 ms 
Sep 02, 2014 1:48:14 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Sep 02, 2014 1:48:14 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/8.0.9 
Sep 02, 2014 1:48:15 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-nio-8080"] 
Sep 02, 2014 1:48:15 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-nio-8009"] 
Sep 02, 2014 1:48:15 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1391 ms 
Sep 02, 2014 1:48:21 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Cart_Checkout] in context with path [/Agro] threw exception [Servlet execution threw an exception] with root cause 
java.lang.Error: Unresolved compilation problem: 
    The method setContent(Object, String) in the type Part is not applicable for the arguments (void, String) 

    at com.kunal.servlet.CartCheckout.doPost(CartCheckout.java:62) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Это дает ошибку при message.setContent(). Процесс аутентификации выполнен успешно, но при создании сообщения генерируется ошибка.

+0

'message.setContent (message.setContent' –

+0

Ops !! мой плохой !! ! Спасибо –

ответ

0

это ошибка компилятора присматриваться к коду у вас есть это

message.setContent(message.setContent("<html>\n" + 
        "<body>\n" + 
        "\n" + 
        "<a href=\"http://kunal.blogspot.com\">\n" + 
        "This is a link</a>\n" + 
        "\n" + 
        "</body>\n" + 
        "</html>", "text/html"), "text/html"); 

должно быть

message.setContent("<html>\n" + 
         "<body>\n" + 
         "\n" + 
         "<a href=\"http://kunal.blogspot.com\">\n" + 
         "This is a link</a>\n" + 
         "\n" + 
         "</body>\n" + 
         "</html>", "text/html"); 
Смежные вопросы