0

apache camel api を使用してメールを送信しています。

   public boolean sendEmail(JSONObject data) 
    { 
            boolean status=false; 
            camel = new DefaultCamelContext(); 
            template = camel.createProducerTemplate(); 

            Map<String, Object> map = new HashMap<String, Object>(); 
            map.put("To",data.getString("toaddress")); 
            String body = data.getString("body"); 
            map.put("Subject", data.getString("subject")); 
            map.put("From", "xxxxxxx@yahoo.com"); 


            template.sendBodyAndHeaders("smtps://smtp.gmail.com?username=sxxx@gmail.com&password=ixxx", body, map); 

            status=true; 
            return status; 

    } 

このコードは、単一の領収書と複数の領収書を送信するために正常に機能していますが、問題は、どの電子メールの領収書が失敗したか、およびどのような理由で失敗したかをどのように知ることができるかということです。いいえ?

4

1 に答える 1

0

本文をエンドポイントに送信するために使用ProducerTemplate.html#sendBodyAndHeaders(java.lang.String, java.lang.Object, java.util.Map)しました。ドキュメントに従って、このメソッドはCamelExecutionException、交換の処理が失敗した場合にスローします。したがって、このコードを try catch ブロック内に配置します

     public boolean sendEmail(JSONObject data) 
        { 
           boolean status=false; 
           camel = new DefaultCamelContext(); 
           template = camel.createProducerTemplate(); 
           Map<String, Object> map = new HashMap<String, Object>(); 
           map.put("To",data.getString("toaddress")); 
           String body = data.getString("body"); 
           map.put("Subject", data.getString("subject")); 
           map.put("From", "xxxxxxx@yahoo.com"); 
        try{
           template.sendBodyAndHeaders("smtps://smtp.gmail.com?username=sxxx@gmail.com&password=ixxx", body, map); 
        }catch(CamelExecutionException camelExecException){
        logger.error("Error occured during sending body to end point :"+ camelExecException.getMessage());
        }
}

これにより、障害がいつ発生し、その背後にある理由を見つけることができます。お役に立てれば

于 2013-10-24T06:02:02.407 に答える