Merged the capi from tizen 2.4 31/40231/1 tizen_3.0.2015.q2_common accepted/tizen/common/20150605.162317 accepted/tizen/mobile/20150606.053111 accepted/tizen/tv/20150606.053809 accepted/tizen/wearable/20150606.054637 submit/tizen/20150605.074449
authorSunghyun Kwon <sh0701.kwon@samsung.com>
Mon, 1 Jun 2015 08:42:08 +0000 (17:42 +0900)
committerSunghyun Kwon <sh0701.kwon@samsung.com>
Mon, 1 Jun 2015 08:42:08 +0000 (17:42 +0900)
Change-Id: Ifcbe098fd2d6f7448915b574977be3d512abbbae

CMakeLists.txt
include/email.h [changed mode: 0644->0755]
include/email_error.h [changed mode: 0644->0755]
include/email_types.h [changed mode: 0644->0755]
packaging/capi-messaging-email.spec
src/email.c [changed mode: 0644->0755]

index c3c3000..0bbb4e8 100644 (file)
@@ -10,7 +10,7 @@ SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
 
-SET(dependents "dlog glib-2.0 edbus capi-base-common email-service")
+SET(dependents "dlog glib-2.0 capi-base-common email-service")
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(${fw_name} REQUIRED ${dependents})
old mode 100644 (file)
new mode 100755 (executable)
index 6167680..fa6164d
@@ -24,7 +24,7 @@
 
 /**
  * @file        email.h
- * @ingroup     CAPI_MESSAGING_FRAMEWORK
+ * @ingroup     CAPI_MESSAGING_EMAIL_MODULE
  * @brief       Messaging API file, support for sending email messages.
  */
 
@@ -40,15 +40,22 @@ extern "C"
 
 /**
  * @brief   Creates an email message handle for sending an email message.
+ * @since_tizen 2.3
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/email
  *
- * @remarks  a email must be released with email_destroy_message() by you. 
+ * @remarks  You must release @a email using email_destroy_message().
  *
- * @param[out]  email  A handle to the email message
+ * @param[out]  email  A handle to the email message
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval     #EMAIL_ERROR_NONE Successful
- * @retval     #EMAIL_ERROR_OUT_OF_MEMORY Out of memory
- * @retval     #EMAIL_ERROR_ACCOUNT_NOT_FOUND           Email account not found
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE                  Successful
+ * @retval  #EMAILS_ERROR_OUT_OF_MEMORY         Out of memory
+ * @retval  #EMAILS_ERROR_ACCOUNT_NOT_FOUND     Email account not found
+ *
+ * @pre      At least one email account should be set up on the device.
  *
  * @see email_destroy_message()
  */
@@ -56,13 +63,16 @@ int email_create_message(email_h *email);
 
 /**
  * @brief   Destroys the email message handle and releases all its resources.
+ * @since_tizen 2.3
+ *
+ * @param[in]  email  The handle to the email message
  *
- * @param[in]  email   The handle to the email message
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval     #EMAIL_ERROR_NONE Successful
- * @retval     #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval     #EMAIL_ERROR_OPERATION_FAILED Operation failed
+ * @retval  #EMAILS_ERROR_NONE               Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #EMAILS_ERROR_OPERATION_FAILED   Operation failed
  *
  * @see email_create_message()
  */
@@ -70,15 +80,21 @@ int email_destroy_message(email_h email);
 
 /**
  * @brief   Sets a subject of the email message.
+ * @since_tizen 2.3
+ *
+ * @param[in]   email    The handle to the email message
+ * @param[in]   subject  The subject of the email message
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
  *
- * @param[in]  email   The handle to the email message
- * @param[in]   subject        The subject of the email message
- * @return     0 on success, otherwise a negative error value.
- * @retval     #EMAIL_ERROR_NONE Successful
- * @retval     #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval     #EMAIL_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval  #EMAILS_ERROR_NONE               Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER  Invalid parameter
+ * @retval  #EMAILS_ERROR_OUT_OF_MEMORY      Out of memory
  *
- * @see        email_create_message()
+ * @pre     An email message handle is created using email_create_message().
+ *
+ * @see  email_create_message()
  */
 int email_set_subject(email_h email, const char *subject);
 
@@ -86,14 +102,21 @@ int email_set_subject(email_h email, const char *subject);
  * @brief   Populates a body of the email message.
  * @details Email message body means the text data to be delivered.
  *
- * @param[in]  email   The handle to the email message
+ * @since_tizen 2.3
+ *
+ * @param[in]   email   The handle to the email message
  * @param[in]   body    The message body
- * @return     0 on success, otherwise a negative error value.
- * @retval     #EMAIL_ERROR_NONE Successful
- * @retval     #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval     # EMAIL_ERROR_OPERATION_FAILED Operation failed
- * @pre     An email message handle is created using #email_create_message().
- * @see        email_create_message()
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_OPERATION_FAILED  Operation failed
+ *
+ * @pre     An email message handle is created using email_create_message().
+ *
+ * @see  email_create_message()
  */
 int email_set_body(email_h email, const char *body);
 
@@ -101,17 +124,23 @@ int email_set_body(email_h email, const char *body);
  * @brief   Adds a recipient to the email message.
  * @details The email API supports sending an email message to multiple recipients. 
  *
+ * @since_tizen 2.3
+ *
  * @remarks Email address should be in standard format (as described in
- * Internet standards RFC 5321 and RFC 5322).\n
+ *          Internet standards RFC 5321 and RFC 5322).
  *
- * @param[in]  email   The handle to the email message
+ * @param[in]   email   The handle to the email message
  * @param[in]   type    The recipient type
  * @param[in]   address The recipient email address
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval  #EMAIL_ERROR_OUT_OF_MEMORY Out of memory
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_OUT_OF_MEMORY     Out of memory
+ *
+ * @pre     An email message handle is created using email_create_message().
  *
  * @see email_create_message()
  * @see email_remove_all_recipients()
@@ -120,12 +149,17 @@ int email_add_recipient(email_h email, email_recipient_type_e type, const char *
 
 /**
  * @brief   Removes all recipients for the email message.
+ * @since_tizen 2.3
+ *
+ * @param[in]  email  The handle to the email message
  *
- * @param[in]  email   The handle to the email message 
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @pre     An email message handle is created using email_create_message().
  *
  * @see email_add_recipient()
  */
@@ -134,17 +168,23 @@ int email_remove_all_recipients(email_h email);
 /**
  * @brief   Adds a file as an attachment to the email message.
  * @details It should be used to add a file to the attachment list
- * of the email message. 
+ *          of the email message.
+ *
+ * @since_tizen 2.3
  *
  * @remarks  The maximum attachment file size is 10MB.
  *
- * @param[in]  email   The handle to the email message 
+ * @param[in]   email       The handle to the email message
  * @param[in]   filepath    The absolute full path of the file to be attached
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval  #EMAIL_ERROR_OUT_OF_MEMORY Out of memory
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_OUT_OF_MEMORY     Out of memory
+ *
+ * @pre     An email message handle is created using email_create_message().
  *
  * @see email_remove_all_attachments()
  *
@@ -153,12 +193,17 @@ int email_add_attach(email_h email, const char *filepath);
 
 /**
  * @brief   Clears all attachments of the email message.
+ * @since_tizen 2.3
+ *
+ * @param[in]  email  The handle to the email message
  *
- * @param[in]  email   The handle to the email message 
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @pre     An email message handle is created using email_create_message().
  *
  * @see email_create_message()
  * @see email_add_attach()
@@ -166,16 +211,24 @@ int email_add_attach(email_h email, const char *filepath);
 int email_remove_all_attachments(email_h email);
 
 /**
- * @brief   Save the email message at outbox.
+ * @brief   Saves the email message at outbox.
+ * @since_tizen 2.3
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/email
  *
- * @remarks Get the id of mail.
+ * @remarks Get the ID of mail.
  *
+ * @param[in]  email  The handle to the email message
  *
- * @param[in]  email   The handle to the email message 
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED Communication with server failed.
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE                             Successful
+ * @retval  #EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED Communication with server failed.
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER                Invalid parameter
+ *
+ * @pre     An email message handle is created using email_create_message().
  *
  * @see email_create_message()
  * @see email_add_recipient()
@@ -187,16 +240,26 @@ int email_save_message(email_h email);
 
 /**
  * @brief   Sends the email message.
+ * @since_tizen 2.3
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/email
+ *
+ * @remarks In order to check whether sending a message succeeds,
+ *          you should register email_message_sent_cb() using email_set_message_sent_cb().
  *
- * @remarks In order to check whether sending a message succeeds, \n you should register email_message_sent_cb() using #email_set_message_sent_cb().
+ * @param[in]   email            The handle to the email message
+ * @param[in]   save_to_sentbox  Set to @c true to save the message in the sentbox,
+ *                               otherwise set to @c false to not save the message in the sentbox
  *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
  *
- * @param[in]  email   The handle to the email message 
- * @param[in]  save_to_sentbox Set to true to save the message in the sentbox, else false
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED Communication with server failed.
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval  #EMAILS_ERROR_NONE                              Successful
+ * @retval  #EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED  Communication with server failed
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER                 Invalid parameter
+ *
+ * @pre     An email message is stored using email_save_message().
  *
  * @see email_save_message()
  * @see email_set_message_sent_cb()
@@ -207,12 +270,13 @@ int email_send_message(email_h email, bool save_to_sentbox);
 /**
  * @brief   Called when the process of sending an email finishes.
  * @details You can check whether sending an email succeeds using this function.
- * 
  *
- * @param[in]  email   The handle to the email message 
- * @param[in]   result         The result of email message sending\n 
- *                                             #EMAIL_SENDING_FAILED or #EMAIL_SENDING_SUCCEEDED
- * @param[in]   user_data  The user data passed from the callback registration function
+ * @since_tizen 2.3
+ *
+ * @param[in]   email       The handle to the email message
+ * @param[in]   result      The result of email message sending \n
+ *                          #EMAIL_SENDING_FAILED or #EMAIL_SENDING_SUCCEEDED
+ * @param[in]   user_data   The user data passed from the callback registration function
  *
  * @pre email_send_message() will invoke this callback if you register this callback using email_set_message_sent_cb().
  *
@@ -226,14 +290,20 @@ typedef void (* email_message_sent_cb)(email_h email, email_sending_e result, vo
  * @brief   Registers a callback function to be invoked when an email message is sent. 
  * @details You will be notified when sending a message finishes and check whether it succeeds using this function. 
  *
- * @param[in]  email   The handle to the email message 
- * @param[in]  callback        The callback function to register
- * @param[in]  user_data       The user data to be passed to the callback function
+ * @since_tizen 2.3
+ *
+ * @param[in]  email      The handle to the email message
+ * @param[in]  callback   The callback function to register
+ * @param[in]  user_data  The user data to be passed to the callback function
+ *
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE               Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER  Invalid parameter
+ *
+ * @post  It will invoke email_message_sent_cb().
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE  Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER     Invalid parameter
- * @post       It will invoke email_message_sent_cb().
  * @see email_message_sent_cb()
  * @see email_unset_message_sent_cb()
  * @see email_send_message()
@@ -242,12 +312,15 @@ int email_set_message_sent_cb(email_h email, email_message_sent_cb callback, voi
 
 /**
  * @brief   Unregisters the callback function.
+ * @since_tizen 2.3
  *
- * @param[in]  email   The handle to the email message
+ * @param[in]  msg  The handle to the email message
  *
- * @return  0 on success, otherwise a negative error value.
- * @retval  #EMAIL_ERROR_NONE Successful
- * @retval  #EMAIL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @return  @c 0 on success,
+ *          otherwise a negative error value
+ *
+ * @retval  #EMAILS_ERROR_NONE              Successful
+ * @retval  #EMAILS_ERROR_INVALID_PARAMETER Invalid parameter
  *
  * @see email_message_sent_cb()
  * @see email_set_message_sent_cb()
@@ -264,3 +337,4 @@ int email_unset_message_sent_cb(email_h msg);
 */
 
 #endif /* __MESSAGING_EMAIL_H__ */
+
old mode 100644 (file)
new mode 100755 (executable)
index fea6a50..88a5fea
@@ -35,21 +35,22 @@ extern "C"
  * @brief       Email error definitions.
  */
 
-
 /**
- *  @brief    Enumerations of error codes for email API.
+ *  @brief    Enumeration for error codes for email API.
+ *  @since_tizen 2.3
  */
 typedef enum
 {
-       EMAIL_ERROR_NONE                              = TIZEN_ERROR_NONE,                   /**< Successful */
-       EMAIL_ERROR_OUT_OF_MEMORY                     = TIZEN_ERROR_OUT_OF_MEMORY,          /**< Memory cannot be allocated */
-       EMAIL_ERROR_INVALID_PARAMETER                 = TIZEN_ERROR_INVALID_PARAMETER,      /**< Invalid parameter */
-
-       EMAIL_ERROR_SERVER_NOT_READY                  = TIZEN_ERROR_MESSAGING_CLASS|0x200,  /**< Server not ready */
-       EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED  = TIZEN_ERROR_MESSAGING_CLASS|0x201,  /**< Communication with server failed */
-       EMAIL_ERROR_OPERATION_FAILED                  = TIZEN_ERROR_MESSAGING_CLASS|0x202,  /**< Operation failed */
-       EMAIL_ERROR_ACCOUNT_NOT_FOUND                 = TIZEN_ERROR_MESSAGING_CLASS|0x203,  /**< Email account not found */
-       EMAIL_ERROR_DB_FAILED                         = TIZEN_ERROR_MESSAGING_CLASS|0x204,  /**< Email database failed */
+    EMAILS_ERROR_NONE                              = TIZEN_ERROR_NONE,                   /**< Successful */
+    EMAILS_ERROR_OUT_OF_MEMORY                     = TIZEN_ERROR_OUT_OF_MEMORY,          /**< Memory cannot be allocated */
+    EMAILS_ERROR_INVALID_PARAMETER                 = TIZEN_ERROR_INVALID_PARAMETER,      /**< Invalid parameter */
+
+    EMAILS_ERROR_SERVER_NOT_READY                  = TIZEN_ERROR_EMAIL_SERVICE|0x200,    /**< Server not ready */
+    EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED  = TIZEN_ERROR_EMAIL_SERVICE|0x201,    /**< Communication with server failed */
+    EMAILS_ERROR_OPERATION_FAILED                  = TIZEN_ERROR_EMAIL_SERVICE|0x202,    /**< Operation failed */
+    EMAILS_ERROR_ACCOUNT_NOT_FOUND                 = TIZEN_ERROR_EMAIL_SERVICE|0x203,    /**< Email account not found */
+    EMAILS_ERROR_DB_FAILED                         = TIZEN_ERROR_EMAIL_SERVICE|0x204,    /**< Email database failed */
+    EMAILS_ERROR_PERMISSION_DENIED                 = TIZEN_ERROR_PERMISSION_DENIED,      /**< Permission denied */
 } email_error_e;
 
 /**
@@ -61,3 +62,4 @@ typedef enum
 #endif
 
 #endif /* __EMAILAPI_ERROR_H__*/
+
old mode 100644 (file)
new mode 100755 (executable)
index cf01ba8..337ac34
@@ -31,35 +31,38 @@ extern "C"
 
 /**
  * @file        email_types.h
- * @ingroup     CAPI_MESSAGING_FRAMEWORK
+ * @ingroup     CAPI_MESSAGING_EMAIL_MODULE
  * @brief       This file defines common types and enums of EMAIL.
  */
 
 
 /**
- * @brief   Email message handle type.
+ * @brief   The email message handle.
+ * @since_tizen 2.3
  */
 typedef struct email_s *email_h;
 
 
 /**
- * @brief      Enumerations for the result values of email transport.
+ * @brief  Enumeration for the result values of email transport.
+ * @since_tizen 2.3
  */
 typedef enum
 {
-  EMAIL_SENDING_FAILED = -1, /**< Email sending failed */
-  EMAIL_SENDING_SUCCEEDED = 0, /**< Email sending succeeded */
+  EMAIL_SENDING_FAILED = -1,    /**< Email sending failed */
+  EMAIL_SENDING_SUCCEEDED = 0,  /**< Email sending succeeded */
 } email_sending_e;
 
 
 /**
- * @brief      Enumerations of the email recipient types.
+ * @brief  Enumeration for the email recipient types.
+ * @since_tizen 2.3
  */
 typedef enum
 {
   EMAIL_RECIPIENT_TYPE_TO = 1, /**< Normal recipient */
-  EMAIL_RECIPIENT_TYPE_CC , /**< CC(carbon copy) recipient */
-  EMAIL_RECIPIENT_TYPE_BCC , /**< BCC(blind carbon copy) recipient */
+  EMAIL_RECIPIENT_TYPE_CC ,    /**< CC(carbon copy) recipient */
+  EMAIL_RECIPIENT_TYPE_BCC ,   /**< BCC(blind carbon copy) recipient */
 } email_recipient_type_e;
 
 
@@ -72,3 +75,4 @@ typedef enum
 
 #endif /* __TIZEN_EMAIL_TYPES_H__*/
 
+
index 9530179..d1acfaf 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-messaging-email
 Summary:    Email library in Tizen Native API
-Version:    0.1.14
+Version:    0.1.15
 Release:    3
 Group:      Messaging/API
 License:    Apache-2.0
@@ -9,10 +9,11 @@ Source1001:   capi-messaging-email.manifest
 BuildRequires:  cmake
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(glib-2.0)
-BuildRequires:  pkgconfig(edbus)
 BuildRequires:  pkgconfig(email-service)
 BuildRequires:  pkgconfig(capi-base-common)
 BuildRequires:  pkgconfig(capi-appfw-application)
+Requires(post): /sbin/ldconfig  
+Requires(postun): /sbin/ldconfig
 
 %description
 Email library in Tizen Native API.
old mode 100644 (file)
new mode 100755 (executable)
index a6d4476..4c8e559
 
 #include <memory.h>
 #include <dlog.h>
-#include <E_DBus.h>
-#include <email-api-mail.h>
-#include <email-api-account.h>
-#include <email-api-network.h>
-#include <email-api-mailbox.h>
-#include <email-api-init.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gio/gio.h>
 #include <email-api.h>
 
-#define EMAIL_API_ERROR_NONE                   1
-#define EMAIL_API_ERROR_OUT_OF_MEMORY          -1028
-#define EMAIL_API_ERROR_ACCOUNT_NOT_FOUND      -1014
-
-#undef EMAIL_ERROR_NONE
-#undef EMAIL_ERROR_OUT_OF_MEMORY
-#undef EMAIL_ERROR_ACCOUNT_NOT_FOUND
-
-#include<email.h>
-#include<email_private.h>
-#include<email_types.h>
-#include<email_error.h>
+#include <email.h>
+#include <email_private.h>
+#include <email_types.h>
+#include <email_error.h>
 
 #ifdef LOG_TAG
 #undef LOG_TAG
 #endif
 #define LOG_TAG "CAPI_EMAIL"
-#define DBG_MODE (1)
 
 #define EM_SAFE_STRDUP(s) \
 ({\
        (_s)? strdup(_s) : NULL;\
 })
 
+#define EM_SAFE_STRLEN(s) \
+({\
+       char* _s = (char*)s;\
+       (_s)? strlen(_s) : 0;\
+})
+
+#define FILE_PATH "/opt/usr/media/.email/capimail.txt"
+#define TMP_PATH "/opt/usr/media/.email"
+
+static guint g_dbus_return_id = 0;
+
 typedef struct {
        email_message_sent_cb  callback;
        email_s *handle;
@@ -58,9 +57,10 @@ typedef struct {
 
 GSList *gEmailcbList= NULL;
 
-E_DBus_Signal_Handler *handler = NULL;
+GDBusConnection* connection=NULL;
 //------------- Utility Or Miscellaneous
-void _email_add_dbus_filter();
+void _email_add_dbus_filter(void);
+void _email_remove_dbus_filter(void);
 int _email_error_converter(int err, const char *func, int line);
 int _email_copy_handle(email_s **dst_handle, email_s *src_handle);
 void _email_free_cb_context(email_cb_context *cbcontext);
@@ -71,80 +71,96 @@ void _email_free_cb_context(email_cb_context *cbcontext);
 
 int email_create_message(email_h *msg)
 {
+       LOGD("START\n");
        int ret;
        email_s * msg_s = NULL;
        email_account_t* account = NULL;
        int len;
 
        if(msg == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
        // 1. create service for ipc
-       ret=email_service_begin();
+       ret = email_service_begin();
+       if (ret != EMAIL_ERROR_NONE && ret != EMAIL_ERROR_IPC_ALREADY_INITIALIZED) {
+               SECURE_SLOGE("[%s] email_service_begin failed : [%d]",__FUNCTION__, ret);
+               return CONVERT_ERROR(ret);
+       }
+
        msg_s= (email_s*)calloc(1,sizeof(email_s));
-       if (msg_s != NULL) {
+       if (msg_s != NULL)
+       {
                msg_s->mail = (email_mail_data_t *)calloc(1,sizeof(email_mail_data_t));
                if (msg_s->mail == NULL) {
-                       LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mail", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
+                       SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mail", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
                        free(msg_s);
-                       return EMAIL_ERROR_OUT_OF_MEMORY;
+                       return EMAILS_ERROR_OUT_OF_MEMORY;
                }
 
                msg_s->mbox = (email_mailbox_t *)calloc(1,sizeof(email_mailbox_t));
-               if (msg_s->mbox == NULL) {
-                       LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mbox", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
+               if (msg_s->mbox == NULL)
+               {
+                       SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mbox", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
                        email_free_mail_data(&msg_s->mail, 1);
                        free(msg_s);
-                       return EMAIL_ERROR_OUT_OF_MEMORY;
+                       return EMAILS_ERROR_OUT_OF_MEMORY;
                }
-       } else {
-               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
+       }
+       else
+       {
+               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+               return EMAILS_ERROR_OUT_OF_MEMORY;
        }
 
-       
+               
        //return error from F/W 
-       //EMAIL_ERROR_INVALID_PARAM/EMAIL_API_ERROR_NONE/EMAIL_ERROR_DB_FAILURE/EMAIL_ERROR_ACCOUNT_NOT_FOUND/EMAIL_ERROR_OUT_OF_MEMORY
+       //EMAILS_ERROR_INVALID_PARAM/EMAIL_ERROR_NONE/EMAILS_ERROR_DB_FAILURE/EMAILS_ERROR_ACCOUNT_NOT_FOUND/EMAILS_ERROR_OUT_OF_MEMORY
        int default_account_id = 0;
-       if ((ret = email_load_default_account_id(&default_account_id)) != EMAIL_API_ERROR_NONE) {
-               LOGE("[%s] email_load_default_account_id failed : [%d]",__FUNCTION__, ret);
+       if ((ret = email_load_default_account_id(&default_account_id)) != EMAIL_ERROR_NONE) {
+               SECURE_SLOGE("[%s] email_load_default_account_id failed : [%d]",__FUNCTION__, ret);
                email_free_mail_data(&msg_s->mail, 1);
                email_free_mailbox(&msg_s->mbox, 1);
                free(msg_s);
                return CONVERT_ERROR(ret);
        }
-
-       ret = email_get_account(default_account_id, GET_FULL_DATA, &account);
-       if(ret!=EMAIL_API_ERROR_NONE) {
-               LOGE("[%s] email_get_account failed : [%d]",__FUNCTION__, ret);
+       
+       ret = email_get_account(default_account_id, GET_FULL_DATA_WITHOUT_PASSWORD, &account);
+       if (ret!=EMAIL_ERROR_NONE) {
+               SECURE_SLOGE("[%s] email_get_account failed : [%d]",__FUNCTION__, ret);
+               if (account) {
+                       email_free_account(&account, 1);
+               }
                email_free_mail_data(&msg_s->mail, 1);
                email_free_mailbox(&msg_s->mbox, 1);
                free(msg_s);
                return CONVERT_ERROR(ret);
        }
 
-       LOGD_IF(DBG_MODE,"account address = %s",account->user_email_address);
-       LOGD_IF(DBG_MODE,"account id = %d",account->account_id);
-       LOGD_IF(DBG_MODE,"account name = %s",account->account_name);
-       LOGD_IF(DBG_MODE,"account user_name = %s",account->incoming_server_user_name);
-
-       msg_s->mail->full_address_from = (char *)calloc(1,sizeof(char)*(strlen(account->incoming_server_user_name)+strlen(account->user_email_address)+1+1+1+1+1));//"++"+<+ address +> + NULL
-       len= (strlen(account->incoming_server_user_name)+strlen(account->user_email_address)+1+1+1+1+1);
+       SECURE_LOGD("account address = %s",account->user_email_address);
+       SECURE_LOGD("account id = %d",account->account_id);
+       SECURE_LOGD("account name = %s",account->account_name);
+       SECURE_LOGD("account user_name = %s",account->incoming_server_user_name);
+       
+       len= EM_SAFE_STRLEN(account->incoming_server_user_name)+EM_SAFE_STRLEN(account->user_email_address)+1+1+1+1+1;
+       msg_s->mail->full_address_from = (char *)calloc(1,sizeof(char)*(len));//"++"+<+ address +> + NULL
        char *strfrom = msg_s->mail->full_address_from;
 
-       snprintf(strfrom,len,"%s%s%s%s%s%s","\"",account->incoming_server_user_name,"\"","<",account->user_email_address,">");
+       if (account->incoming_server_user_name)
+               snprintf(strfrom, len, "%s%s%s%s%s%s", "\"", account->incoming_server_user_name, "\"", "<", account->user_email_address, ">");
+       else
+               snprintf(strfrom, len, "%s%s%s", "<", account->user_email_address, ">");
 
        //mbox
-       email_mailbox_t *mbox =msg_s->mbox;
+       email_mailbox_t *mbox = msg_s->mbox;
 
-       if ((ret = email_get_mailbox_by_mailbox_type(default_account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &mbox)) != EMAIL_API_ERROR_NONE) {
-               LOGE("[%s] email_get_mailbox_by_mailbox_type failed %d", __FUNCTION__, ret);
+       if ((ret = email_get_mailbox_by_mailbox_type(default_account_id, EMAIL_MAILBOX_TYPE_OUTBOX, &mbox)) != EMAIL_ERROR_NONE) {
+               SECURE_SLOGE("[%s] email_get_mailbox_by_mailbox_type failed %d", __FUNCTION__, ret);
                email_free_mail_data(&msg_s->mail, 1);
                email_free_mailbox(&msg_s->mbox, 1);
                free(msg_s);
-               return EMAIL_ERROR_DB_FAILED;
+               return CONVERT_ERROR(ret);
        }
 
        //info
@@ -157,18 +173,21 @@ int email_create_message(email_h *msg)
        msg_s->mail->attachment_count = 0;
 
        *msg = (email_h)msg_s;
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_destroy_message(email_h msg)
 {
+       LOGD("START\n");
        int ret;
 
+
        if(msg == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
-       
+               
        email_s* msg_s = (email_s* )msg;
 
        if(msg_s)
@@ -181,100 +200,123 @@ int email_destroy_message(email_h msg)
 
                free(msg_s);            
        }
-
-
+       
        ret=email_service_end();
-
-       if(ret!=EMAIL_API_ERROR_NONE) {
-               LOGE("[%s] OPERATION_FAILED(0x%08x) : Finishing email service failed", __FUNCTION__, EMAIL_ERROR_OPERATION_FAILED);
-               return EMAIL_ERROR_OPERATION_FAILED;
+       
+       if(ret!=EMAIL_ERROR_NONE){
+               SECURE_SLOGE("[%s] OPERATION_FAILED(0x%08x) : Finishing email service failed", __FUNCTION__, EMAILS_ERROR_OPERATION_FAILED);
+               return EMAILS_ERROR_OPERATION_FAILED;
        }
 
-               
-       return EMAIL_ERROR_NONE;
+       gEmailcbList= NULL;
+
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_set_subject (email_h msg, const char *subject)
 {
+       LOGD("START\n");
        int len;
-       if(msg ==NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       if(msg ==NULL)
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
-       
+               
        email_s* msg_s = (email_s* )msg;        
 
        msg_s->mail->subject=(char*)calloc(1,sizeof(char)*strlen(subject)+1);
 
-       if(msg_s->mail->subject ==NULL) {
-               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mail->head->subject", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
+       if(msg_s->mail->subject ==NULL)
+       {
+               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create msg_s->mail->head->subject", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+               return EMAILS_ERROR_OUT_OF_MEMORY;
        }
-
+       
        len =strlen(subject)+1;
        snprintf(msg_s->mail->subject ,len,"%s",subject); 
-
-       return EMAIL_ERROR_NONE;
+       
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_set_body (email_h msg, const char *body)
 {
+       LOGD("START\n");
        int len;
 
        if (msg == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
-
+       
        email_s* msg_s = (email_s* )msg;        
-
        FILE* file = NULL;
 
-       file = fopen("/tmp/capimail.txt", "w");
+       if (!g_file_test(TMP_PATH, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+               if (g_mkdir(TMP_PATH, 0775) == -1) {
+                       SECURE_SLOGE("[%s] OPERATION_FAILED(0x%08x) : Create directory failed.", __FUNCTION__, EMAILS_ERROR_OPERATION_FAILED);
+                       return EMAILS_ERROR_OPERATION_FAILED;
+               }
+
+               if (g_chmod(TMP_PATH, 0775) == -1) {
+                       SECURE_SLOGE("[%s] OPERATION_FAILED(0x%08x) : Change permission failed.", __FUNCTION__, EMAILS_ERROR_OPERATION_FAILED);
+                       return EMAILS_ERROR_OPERATION_FAILED;
+               }
+       }
+
+       file = fopen(FILE_PATH, "w");
        if (file != NULL) {
                 fputs(body, file);
                 fclose(file);
        } else {
-               LOGE("[%s] OPERATION_FAILED(0x%08x) : opening file for email body failed.", __FUNCTION__, EMAIL_ERROR_OPERATION_FAILED);
-               return EMAIL_ERROR_OPERATION_FAILED;
+               SECURE_SLOGE("[%s] OPERATION_FAILED(0x%08x) : opening file for email body failed.", __FUNCTION__, EMAILS_ERROR_OPERATION_FAILED);
+               return EMAILS_ERROR_OPERATION_FAILED;
        }
 
-       msg_s->mail->file_path_plain =(char *)calloc(1,sizeof(char)*strlen("/tmp/capimail.txt")+1);
+       len = strlen(FILE_PATH) + 1;
 
-       if(msg_s->mail->file_path_plain == NULL) {
-               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to allocate body(plain).", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
+       msg_s->mail->file_path_plain = (char *)calloc(1, sizeof(char) * len);
+       if (msg_s->mail->file_path_plain == NULL) {
+               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to allocate body(plain).", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+               return EMAILS_ERROR_OUT_OF_MEMORY;
        }
-
-       len =strlen("/tmp/capimail.txt")+1;
-       snprintf(msg_s->mail->file_path_plain,len,"%s","/tmp/capimail.txt");
-
-       return EMAIL_ERROR_NONE;
+       
+       snprintf(msg_s->mail->file_path_plain, len, "%s", FILE_PATH);
+       
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_add_recipient (email_h msg, email_recipient_type_e type, const char *address)
 {
+       LOGD("START\n");
        char *tmp;
        int total_len,in_len,pre_len,len;
 
-       if(msg == NULL || type < EMAIL_RECIPIENT_TYPE_TO || type > EMAIL_RECIPIENT_TYPE_BCC) {
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       if(msg == NULL || type < EMAIL_RECIPIENT_TYPE_TO || type > EMAIL_RECIPIENT_TYPE_BCC )
+       {
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
-
+       
        email_s* msg_s = (email_s* )msg;
-
-       if(strlen(address) > MAX_RECIPIENT_ADDRESS_LEN) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : The length of address should be less than 234.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       
+       if(strlen(address) > MAX_RECIPIENT_ADDRESS_LEN)
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : The length of address should be less than 234.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
-       if(type == EMAIL_RECIPIENT_TYPE_TO) {
-               if(msg_s->mail->full_address_to == NULL) {
+       if(type == EMAIL_RECIPIENT_TYPE_TO)
+       {
+               if(msg_s->mail->full_address_to == NULL)
+               {
                        msg_s->mail->full_address_to = (char*)calloc(1,sizeof(char)*strlen(address)+2+1+1);//<>+;+end of string
                        if(msg_s->mail->full_address_to == NULL)
                        {
-                               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->to.", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-                               return EMAIL_ERROR_OUT_OF_MEMORY;
+                               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->to.", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+                               return EMAILS_ERROR_OUT_OF_MEMORY;
                        }
                        len =strlen(address)+2+1+1;
                        snprintf(msg_s->mail->full_address_to,len,"%s%s%s","<",address,">");
@@ -289,16 +331,22 @@ int email_add_recipient (email_h msg, email_recipient_type_e type, const char *a
                        snprintf(msg_s->mail->full_address_to,total_len,"%s%s%s%s",tmp,",<",address,">");
                        free(tmp);
                }
-       } else if (type == EMAIL_RECIPIENT_TYPE_CC) { //MESSAGING_RECIPIENT_TYPE_CC 
-               if(msg_s->mail->full_address_cc == NULL) {
+               
+       }
+       else if(type == EMAIL_RECIPIENT_TYPE_CC)//MESSAGING_RECIPIENT_TYPE_CC
+       {
+               if(msg_s->mail->full_address_cc == NULL)
+               {
                        msg_s->mail->full_address_cc = (char*)calloc(1,sizeof(char)*strlen(address)+2+1+1);//<>+;+end of string
-                       if(msg_s->mail->full_address_cc == NULL) {
-                               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->cc.", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-                               return EMAIL_ERROR_OUT_OF_MEMORY;
+                       if(msg_s->mail->full_address_cc == NULL)
+                       {
+                               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->cc.", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+                               return EMAILS_ERROR_OUT_OF_MEMORY;
                        }
                        len =strlen(address)+2+1+1;
                        snprintf(msg_s->mail->full_address_cc,len,"%s%s%s","<",address,">");
                } else {
+
                        in_len = strlen(address);
                        pre_len = strlen(msg_s->mail->full_address_cc);
                        total_len = pre_len+in_len+3+1;// length of ",<>" + NULL
@@ -309,16 +357,22 @@ int email_add_recipient (email_h msg, email_recipient_type_e type, const char *a
                        snprintf(msg_s->mail->full_address_cc,total_len,"%s%s%s%s",tmp,",<",address,">");
                        free(tmp);
                }
-       } else { //MESSAGING_RECIPIENT_TYPE_BCC
-               if (msg_s->mail->full_address_bcc == NULL) {
+               
+       }
+       else //MESSAGING_RECIPIENT_TYPE_BCC
+       {
+               if(msg_s->mail->full_address_bcc == NULL)
+               {
                        msg_s->mail->full_address_bcc = (char*)calloc(1,sizeof(char)*strlen(address)+2+1+1);//<>+;+end of string
-                       if(msg_s->mail->full_address_bcc==NULL) {
-                               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->bcc.", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-                               return EMAIL_ERROR_OUT_OF_MEMORY;
+                       if(msg_s->mail->full_address_bcc==NULL)
+                       {
+                               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create head->bcc.", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+                               return EMAILS_ERROR_OUT_OF_MEMORY;
                        }
                        len =strlen(address)+2+1+1;
                        snprintf(msg_s->mail->full_address_bcc,len,"%s%s%s","<",address,">");
                } else {
+
                        in_len = strlen(address);
                        pre_len = strlen(msg_s->mail->full_address_bcc);
                        total_len = pre_len+in_len+3+1;// length of ",<>" + NULL
@@ -331,45 +385,54 @@ int email_add_recipient (email_h msg, email_recipient_type_e type, const char *a
                }
        }
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_remove_all_recipients(email_h msg)
 {
-       if(msg ==NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : fail to create tmp memory.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       LOGD("START\n");
+       if(msg ==NULL)
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : fail to create tmp memory.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
-
+       
        email_s *msg_s = (email_s *)msg;
 
-       if (msg_s->mail->full_address_to != NULL) {
+       if(msg_s->mail->full_address_to != NULL)
+       {
                free(msg_s->mail->full_address_to);
                msg_s->mail->full_address_to = NULL;
        }
 
-       if (msg_s->mail->full_address_cc != NULL) {
+       if(msg_s->mail->full_address_cc != NULL)
+       {
                free(msg_s->mail->full_address_cc);
                msg_s->mail->full_address_cc = NULL;
        }
 
-       if (msg_s->mail->full_address_bcc != NULL) {
+       if(msg_s->mail->full_address_bcc != NULL)
+       {
                free(msg_s->mail->full_address_bcc);
                msg_s->mail->full_address_bcc = NULL;
        }
-
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
-int email_add_attach(email_h msg, const char *filepath)
+
+int email_add_attach (email_h msg, const char *filepath)
 {
+       LOGD("START\n");
        int len;
        char *pos,*last;
        struct stat st;
 
-       if(msg ==NULL || filepath == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg or filepath is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       if(msg ==NULL || filepath == NULL)
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg or filepath is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
        email_s *msg_s = (email_s *)msg;
@@ -378,23 +441,30 @@ int email_add_attach(email_h msg, const char *filepath)
        email_attachment_data_t *new_attach = msg_s->attachment;
 
        stat(filepath, &st);
-       if(st.st_size > 10*1024*1024) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : the size of attachment file is beyond the limit(MAX:10M).", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       if(st.st_size > 10*1024*1024)
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : the size of attachment file is beyond the limit(MAX:10M).", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
-       if (!S_ISREG(st.st_mode)) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : the filepath is not regular file.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       if (!S_ISREG(st.st_mode))
+       {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : the filepath is not regular file.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
+               
 
        pos=strpbrk(filepath, "//");
        len =strlen(filepath); 
-       if(pos == NULL) {
+       if(pos == NULL)
+       {
                new_attach[attachment_count].attachment_name = (char*)calloc(1,sizeof(char)*len+1);
                snprintf(new_attach[attachment_count].attachment_name,len+1,"%s",filepath); 
-       } else {
-               while(pos != NULL) {
+       }
+       else
+       {
+               while(pos != NULL)
+               {
                        last=pos;
                        pos=strpbrk(pos,"//");  
                        if(pos != NULL) pos++;
@@ -403,7 +473,7 @@ int email_add_attach(email_h msg, const char *filepath)
                new_attach[attachment_count].attachment_name = strdup(last);
        }
        new_attach[attachment_count].attachment_path =(char*)calloc(1,sizeof(char)*len+1);
-       if (new_attach[attachment_count].attachment_path == NULL) return EMAIL_ERROR_OUT_OF_MEMORY;
+       if (new_attach[attachment_count].attachment_path == NULL) return EMAILS_ERROR_OUT_OF_MEMORY;
 
        snprintf(new_attach[attachment_count].attachment_path, len+1, "%s", filepath); 
        new_attach[attachment_count].attachment_size = st.st_size;
@@ -411,137 +481,147 @@ int email_add_attach(email_h msg, const char *filepath)
 
        msg_s->mail->attachment_count++;
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
+
 }
 
 int email_remove_all_attachments (email_h msg)
 {
+       LOGD("START\n");
        if (msg ==NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
        email_s* msg_s = (email_s* )msg;
+
        msg_s->mail->attachment_count = 0;
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_save_message (email_h msg)
 {
-       int i, ret;
+       LOGD("START\n");
+       int ret;
+/*
+       int i;
+       email_mailbox_t *box = NULL;
        email_attachment_data_t *tmp_attach = NULL;
        struct tm *struct_time;
-
+*/
        if (msg == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }       
 
        email_s *msg_s = (email_s *)msg;
-
+#if 0  
        /*--------- head ----------*/
-       LOGD_IF(DBG_MODE, " ----------head---------");
-       LOGD_IF(DBG_MODE, "  mid: %s\n",msg_s->mail->message_id);
-       LOGD_IF(DBG_MODE, "  subject: %s\n",msg_s->mail->subject);
-       LOGD_IF(DBG_MODE, "  to: %s\n",msg_s->mail->full_address_to);
-       LOGD_IF(DBG_MODE, "  from: %s\n",msg_s->mail->full_address_from);
-       LOGD_IF(DBG_MODE, "  cc: %s\n",msg_s->mail->full_address_cc);
-       LOGD_IF(DBG_MODE, "  bcc: %s\n",msg_s->mail->full_address_bcc);
-       LOGD_IF(DBG_MODE, "  reply_to: %s\n",msg_s->mail->full_address_reply);
-       LOGD_IF(DBG_MODE, "  return_path: %s\n",msg_s->mail->full_address_return);
-       LOGD_IF(DBG_MODE, "  previewBodyText: %s\n",msg_s->mail->preview_text);
+       SECURE_LOGD(" ----------head---------");
+       SECURE_LOGD("  mid: %s\n",msg_s->mail->message_id);
+       SECURE_LOGD("  subject: %s\n",msg_s->mail->subject);
+       SECURE_LOGD("  to: %s\n",msg_s->mail->full_address_to);
+       SECURE_LOGD("  from: %s\n",msg_s->mail->full_address_from);
+       SECURE_LOGD("  cc: %s\n",msg_s->mail->full_address_cc);
+       SECURE_LOGD("  bcc: %s\n",msg_s->mail->full_address_bcc);
+       SECURE_LOGD("  reply_to: %s\n",msg_s->mail->full_address_reply);
+       SECURE_LOGD("  return_path: %s\n",msg_s->mail->full_address_return);
+       SECURE_LOGD("  previewBodyText: %s\n",msg_s->mail->preview_text);
 
        struct_time = localtime(&msg_s->mail->date_time);
 
-       LOGD_IF(DBG_MODE, "  %4d year\n", struct_time->tm_year+1900);
-       LOGD_IF(DBG_MODE, "  %2d month\n", struct_time->tm_mon+1);
-       LOGD_IF(DBG_MODE, "  %2d day\n", struct_time->tm_mday);
-       LOGD_IF(DBG_MODE, "  %2d:%2d:%2d \n", struct_time->tm_hour, struct_time->tm_min, struct_time->tm_sec);
+       SECURE_LOGD("  %4d year\n", struct_time->tm_year+1900);
+       SECURE_LOGD("  %2d month\n", struct_time->tm_mon+1);
+       SECURE_LOGD("  %2d day\n", struct_time->tm_mday);
+       SECURE_LOGD("  %2d:%2d:%2d \n", struct_time->tm_hour, struct_time->tm_min, struct_time->tm_sec);
 
        /*--------- body ----------*/
-       LOGD_IF(DBG_MODE, " ----------body---------");
-       LOGD_IF(DBG_MODE, "  body\n");
-       LOGD_IF(DBG_MODE, "  plain: %s\n",msg_s->mail->file_path_plain);
-       LOGD_IF(DBG_MODE, "  html: %s\n",msg_s->mail->file_path_html);
-       LOGD_IF(DBG_MODE, "  attachment_num: %d\n",msg_s->mail->attachment_count);
+       SECURE_LOGD(" ----------body---------");
+       SECURE_LOGD("  body\n");
+       SECURE_LOGD("  plain: %s\n",msg_s->mail->file_path_plain);
+       SECURE_LOGD("  html: %s\n",msg_s->mail->file_path_html);
+       SECURE_LOGD("  attachment_num: %d\n",msg_s->mail->attachment_count);
        tmp_attach = msg_s->attachment;
        for (i=0; i < msg_s->mail->attachment_count; i++) {
-               LOGD_IF(DBG_MODE, " ----------attachment[%d]---------", i+1);
-               LOGD_IF(DBG_MODE, "  name: %s\n",tmp_attach[i].attachment_name);
-               LOGD_IF(DBG_MODE, "  savename: %s\n",tmp_attach[i].attachment_path);
-               LOGD_IF(DBG_MODE, "  downloaded: %d\n",tmp_attach[i].save_status);
-               LOGD_IF(DBG_MODE, "  size: %d\n",tmp_attach[i].attachment_size);
+               SECURE_LOGD(" ----------attachment[%d]---------", i+1);
+               SECURE_LOGD("  name: %s\n",tmp_attach[i].attachment_name);
+               SECURE_LOGD("  savename: %s\n",tmp_attach[i].attachment_path);
+               SECURE_LOGD("  downloaded: %d\n",tmp_attach[i].save_status);
+               SECURE_LOGD("  size: %d\n",tmp_attach[i].attachment_size);
        }               
-       
-       /*--------- info ----------*/
-       LOGD_IF(DBG_MODE, " ----------info---------");
-       LOGD_IF(DBG_MODE, "  account_id: %d\n",msg_s->mail->account_id);
-       LOGD_IF(DBG_MODE, "  mail_id: %d\n",msg_s->mail->mail_id);
-       LOGD_IF(DBG_MODE, "  mail_size: %d\n",msg_s->mail->mail_size);
-       LOGD_IF(DBG_MODE, "  body_download_status: %d\n",msg_s->mail->body_download_status);
-       LOGD_IF(DBG_MODE, "  server_id: %s\n",msg_s->mail->server_mail_id);
-       LOGD_IF(DBG_MODE, "  meeting_request_status: %d\n",msg_s->mail->meeting_request_status);        
-       
-       email_mailbox_t * box;
-       box=msg_s->mbox;
-       LOGD_IF(DBG_MODE, " ----------box---------");
-       LOGD_IF(DBG_MODE, "  email_mailbox_t \n");
-       LOGD_IF(DBG_MODE, "  name: %s\n",box->mailbox_name);
-       LOGD_IF(DBG_MODE, "  mailbox_type: %d\n",box->mailbox_type);
-       LOGD_IF(DBG_MODE, "  alias: %s\n",box->alias);
-       LOGD_IF(DBG_MODE, "  unread_count: %d\n",box->unread_count);
-       LOGD_IF(DBG_MODE, "  total_mail_count_on_local: %d\n",box->total_mail_count_on_local);
-       LOGD_IF(DBG_MODE, "  total_mail_count_on_server: %d\n",box->total_mail_count_on_server);
-       LOGD_IF(DBG_MODE, "  local: %d\n",box->local);
-       LOGD_IF(DBG_MODE, "  account_id: %d\n",box->account_id);
-       LOGD_IF(DBG_MODE, "  mail_slot_size: %d\n",box->mail_slot_size);
 
+       /*--------- info ----------*/
+       SECURE_LOGD(" ----------info---------");
+       SECURE_LOGD("  account_id: %d\n",msg_s->mail->account_id);
+       SECURE_LOGD("  mail_id: %d\n",msg_s->mail->mail_id);
+       SECURE_LOGD("  mail_size: %d\n",msg_s->mail->mail_size);
+       SECURE_LOGD("  body_download_status: %d\n",msg_s->mail->body_download_status);
+       SECURE_LOGD("  server_id: %s\n",msg_s->mail->server_mail_id);
+       SECURE_LOGD("  meeting_request_status: %d\n",msg_s->mail->meeting_request_status);      
+
+       /*---------- box info -----*/
+       box = msg_s->mbox;
+       SECURE_LOGD(" ----------box---------");
+       SECURE_LOGD("  email_mailbox_t \n");
+       SECURE_LOGD("  name: %s\n",box->mailbox_name);
+       SECURE_LOGD("  mailbox_type: %d\n",box->mailbox_type);
+       SECURE_LOGD("  alias: %s\n",box->alias);
+       SECURE_LOGD("  unread_count: %d\n",box->unread_count);
+       SECURE_LOGD("  total_mail_count_on_local: %d\n",box->total_mail_count_on_local);
+       SECURE_LOGD("  total_mail_count_on_server: %d\n",box->total_mail_count_on_server);
+       SECURE_LOGD("  local: %d\n",box->local);
+       SECURE_LOGD("  account_id: %d\n",box->account_id);
+       SECURE_LOGD("  mail_slot_size: %d\n",box->mail_slot_size);
+#endif
        ret=email_add_mail(msg_s->mail, msg_s->attachment, msg_s->mail->attachment_count, NULL, 0);
-
        ret=CONVERT_ERROR(ret);
 
+       LOGD("END\n");
        return ret;     
 }
 
 int email_send_message (email_h msg, bool save_to_sentbox)
 {
+       LOGD("START\n");
        int ret;
        int handle;
 
        if (msg == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }       
 
        email_s *msg_s = (email_s *)msg;
 
-       ret = email_send_mail(msg_s->mail->mail_id, &handle);
+       ret=email_send_mail(msg_s->mail->mail_id, &handle);
 
-       ret = CONVERT_ERROR(ret);
-
-       _email_add_dbus_filter();
+       ret=CONVERT_ERROR(ret);
 
+       LOGD("END\n");
        return ret;
 }
 
-email_cb_context *_email_search_callback_by_emailid(int mailid)
+
+email_cb_context * _email_search_callback_by_emailid(int mailid)
 {
+       LOGD("START\n");
        int count;
        int ntmp=0;
-       GSList *node;
+       GSList * node;
        email_cb_context *cbContext;
-       count = g_slist_length(gEmailcbList);
+       count = g_slist_length( gEmailcbList );
 
-       LOGD_IF(DBG_MODE, "Count : [%d]\n", count);
-       while (count) {
-               node = g_slist_nth(gEmailcbList, ntmp);
+       while( count )
+       {
+               node = g_slist_nth( gEmailcbList, ntmp );
                        
-               if (node == NULL)
+               if(node == NULL || node->data == NULL)
                        break;
                
                cbContext = (email_cb_context *)node->data;
-               LOGD_IF(DBG_MODE, "mail_id : [%d]\n", cbContext->handle->mail->mail_id);
                if (cbContext->handle->mail->mail_id == mailid) {
                        return cbContext;
                }
@@ -550,31 +630,40 @@ email_cb_context *_email_search_callback_by_emailid(int mailid)
                count--;
        }
 
+       LOGD("END\n");
        return NULL;
 }
 
+
 int email_set_message_sent_cb (email_h handle, email_message_sent_cb cb, void *user_data)
 {
+       LOGD("START\n");
        int count;
        int ntmp=0;
-       int ret = EMAIL_ERROR_NONE;
-       GSList *node;
+       int ret = EMAILS_ERROR_NONE;
+       GSList * node;
+       email_s *p_handle = (email_s *)handle;
        email_cb_context *cbContext;
-       count = g_slist_length(gEmailcbList);
+       count = g_slist_length( gEmailcbList );
 
-       if(handle == NULL || cb == NULL) return EMAIL_ERROR_INVALID_PARAMETER;
+       SECURE_LOGD("count : [%d]\n", count);
 
+       if (handle == NULL || p_handle->mail == NULL || cb == NULL) return EMAILS_ERROR_INVALID_PARAMETER;
+               
        email_s* msg_s = NULL;
-
+       
        while (count) {
-               node = g_slist_nth(gEmailcbList, ntmp);
+               node = g_slist_nth( gEmailcbList, ntmp );
                        
                if (node == NULL)
                        break;
                
-               cbContext = (email_cb_context *)node->data; 
-               if (cbContext->handle == (email_s *)handle) {
-                       gEmailcbList = g_slist_remove(gEmailcbList,node);
+               cbContext= (email_cb_context *)node->data;
+               SECURE_LOGD("mail_id : [%d]\n", cbContext->handle->mail->mail_id);
+
+               if (cbContext->handle->mail->mail_id == p_handle->mail->mail_id)
+               {
+                       gEmailcbList = g_slist_delete_link(gEmailcbList, node);
                        _email_free_cb_context(cbContext);      
                        break;
                }
@@ -583,273 +672,376 @@ int email_set_message_sent_cb (email_h handle, email_message_sent_cb cb, void *u
                count--;
        }
 
-       if ((ret = _email_copy_handle(&msg_s, (email_s *)handle)) != EMAIL_ERROR_NONE) {
-               LOGE("[%s] _email_copy_handle failed", __FUNCTION__);
+       if ((ret = _email_copy_handle(&msg_s, p_handle)) != EMAILS_ERROR_NONE) {
+               SECURE_SLOGE("[%s] _email_copy_handle failed", __FUNCTION__);
                return ret;
        }
 
-       email_cb_context *cbcontext = (email_cb_context *)calloc(1, sizeof(email_cb_context) );
+       email_cb_context *cbcontext = (email_cb_context *)calloc(1, sizeof(email_cb_context));
+       if (cbcontext == NULL) {
+               SECURE_SLOGE("[%s] calloc failed", __FUNCTION__);
+               ret = EMAIL_ERROR_OUT_OF_MEMORY;
+               return ret;
+       }
 
+       SECURE_LOGD("mail_id   : [%d]\n", msg_s->mail->mail_id);
+       SECURE_LOGD("Callback  : [%p]\n", cb);
+       SECURE_LOGD("User Data : [%p]\n", user_data);
+       
        cbcontext->handle = msg_s;
        cbcontext->callback = cb;
        cbcontext->user_data = user_data;
 
-       gEmailcbList = g_slist_append(gEmailcbList,cbcontext);
+       gEmailcbList = g_slist_append(gEmailcbList, cbcontext);
 
+       /* Set the dbus filter */
+       _email_add_dbus_filter();
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int email_unset_message_sent_cb (email_h msg)
 {
+       LOGD("START\n");
        int i,count;
-       count = g_slist_length(gEmailcbList);
-       GSList *node;
+       count = g_slist_length( gEmailcbList );
+       GSList * node;
        email_cb_context *cbContext;
 
-       if (msg ==NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
-               return EMAIL_ERROR_INVALID_PARAMETER;
+       SECURE_LOGD("count : [%d]\n", count);
+
+       if (msg == NULL) {
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is null.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
+               return EMAILS_ERROR_INVALID_PARAMETER;
        }
 
        email_s* msg_s = (email_s* )msg;
-       for (i=0;i<count;i++) {
-               node = g_slist_nth(gEmailcbList, i);
+       for(i=0;i<count;i++)
+       {
+               node = g_slist_nth( gEmailcbList, i );
                if( node == NULL )
                        break;
                
-               cbContext = (email_cb_context *)node->data; 
-               if(cbContext->handle == msg_s) {        
-                       gEmailcbList = g_slist_remove(gEmailcbList,node);
+               cbContext= (email_cb_context *)node->data; 
+               SECURE_LOGD("mail_id : [%d]\n", cbContext->handle->mail->mail_id);
+               SECURE_LOGD("mail_id : [%d]\n", msg_s->mail->mail_id);
+
+               if(cbContext->handle->mail->mail_id == msg_s->mail->mail_id)
+               {       
+                       gEmailcbList = g_slist_delete_link(gEmailcbList, node);
                        _email_free_cb_context(cbContext);
                        break;
                }
        }
-       return EMAIL_ERROR_NONE;
+
+       /* Remove the dbus filter */
+       _email_remove_dbus_filter();
+
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int _email_error_converter(int err, const char *func, int line)
 {
-       switch(err) {
-       case EMAIL_ERROR_INVALID_PARAM :
-               LOGE("[%s:%d] INVALID_PARAM(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_INVALID_PARAMETER, err);
-               return EMAIL_ERROR_INVALID_PARAMETER;
-       case EMAIL_ERROR_DB_FAILURE :
-               LOGE("[%s:%d] DB_FAILURE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_DB_FAILED, err);
-               return EMAIL_ERROR_DB_FAILED;
-       case EMAIL_API_ERROR_ACCOUNT_NOT_FOUND :
-               LOGE("[%s:%d] ACCOUNT_NOT_FOUND(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_ACCOUNT_NOT_FOUND,err);
-               return EMAIL_ERROR_ACCOUNT_NOT_FOUND;
-       case EMAIL_API_ERROR_OUT_OF_MEMORY :
-               LOGE("[%s:%d] OUT_OF_MEMORY(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_OUT_OF_MEMORY,err);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
-       // Tizen email F/W  is often using this error type when it gets a null value from server
-       //It could be caused from server or IPC.
-       case EMAIL_ERROR_NULL_VALUE :
-               LOGE("[%s:%d] NULL_VALUE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED,err);
-               return EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED;
-       case EMAIL_ERROR_IPC_SOCKET_FAILURE :
-               LOGE("[%s:%d] IPC_SOCKET_FAILURE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED,err);
-               return EMAIL_ERROR_COMMUNICATION_WITH_SERVER_FAILED;
-       case EMAIL_API_ERROR_NONE :
-               return EMAIL_ERROR_NONE;
-       default :
-               LOGE("[%s:%d] OPERATION_FAILED(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAIL_ERROR_OPERATION_FAILED,err);
-               return EMAIL_ERROR_OPERATION_FAILED;
+       LOGD("START\n");
+       switch(err) 
+       {
+               case EMAIL_ERROR_INVALID_PARAM :
+                       SECURE_SLOGE("[%s:%d] INVALID_PARAM(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_INVALID_PARAMETER, err);
+                       return EMAILS_ERROR_INVALID_PARAMETER;
+
+               case EMAIL_ERROR_DB_FAILURE :
+                       SECURE_SLOGE("[%s:%d] DB_FAILURE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_DB_FAILED, err);
+                       return EMAILS_ERROR_DB_FAILED;
+
+               case EMAIL_ERROR_ACCOUNT_NOT_FOUND :
+                       SECURE_SLOGE("[%s:%d] ACCOUNT_NOT_FOUND(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_ACCOUNT_NOT_FOUND,err);
+                       return EMAILS_ERROR_ACCOUNT_NOT_FOUND;
+
+               case EMAIL_ERROR_OUT_OF_MEMORY :
+                       SECURE_SLOGE("[%s:%d] OUT_OF_MEMORY(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_OUT_OF_MEMORY,err);
+                       return EMAILS_ERROR_OUT_OF_MEMORY;
+                       
+               // Tizen email F/W  is often using this error type when it gets a null value from server
+               //It could be caused from server or IPC.
+               case EMAIL_ERROR_NULL_VALUE :
+                       SECURE_SLOGE("[%s:%d] NULL_VALUE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED,err);
+                       return EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED;
+
+               case EMAIL_ERROR_IPC_SOCKET_FAILURE :
+                       SECURE_SLOGE("[%s:%d] IPC_SOCKET_FAILURE(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED,err);
+                       return EMAILS_ERROR_COMMUNICATION_WITH_SERVER_FAILED;
+
+               case EMAIL_ERROR_PERMISSION_DENIED :
+                       SECURE_SLOGE("[%s:%d] PERMISSION_DENIED(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_PERMISSION_DENIED,err);
+                       return EMAILS_ERROR_PERMISSION_DENIED;
+
+               case EMAIL_ERROR_NONE :
+                       return EMAILS_ERROR_NONE;
+
+               default :
+                       SECURE_SLOGE("[%s:%d] OPERATION_FAILED(0x%08x) : Error from Email F/W. ret: (0x%08x) ", func, line, EMAILS_ERROR_OPERATION_FAILED,err);
+                       return EMAILS_ERROR_OPERATION_FAILED;
+
        }
+       LOGD("END\n");
 }
 
-static void _monitorSendStatusCb(void* data, DBusMessage *message)
+static void _monitorSendStatusCb(GDBusConnection *connection, 
+                                                                       const gchar *sender_name,
+                                                                       const gchar *object_path,
+                                                                       const gchar *interface_name,
+                                                                       const gchar *signal_name,
+                                                                       GVariant *parameters,
+                                                                       gpointer data)
 {
-       DBusError error;
+       LOGD("START\n");
+       int status = 0;
+       int account_id = 0;
+       char *file_id = NULL;
+       int mail_id = 0;
+       int error_code = 0;
+
        email_cb_context *cbContext = NULL;
-       if (dbus_message_is_signal(message, "User.Email.NetworkStatus", "email")) {
-               dbus_error_init(&error);
-
-               int status=0;
-               int accountid=0;
-               char* fileid=NULL;
-               int mailid=0;
-               int errorcode=0;
-               if(dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &status, DBUS_TYPE_INT32, &accountid, DBUS_TYPE_STRING, &fileid, DBUS_TYPE_INT32, &mailid, DBUS_TYPE_INT32, &errorcode, DBUS_TYPE_INVALID)) {
-                       LOGD_IF(DBG_MODE, "status:[%d], account_id:[%d], file_id:[%s], mail_id:[%d], error_code:[%d]", status, accountid, fileid, mailid, errorcode);
-                       cbContext = _email_search_callback_by_emailid(mailid);
-                       if(cbContext == NULL) {
-                                       LOGD_IF(DBG_MODE, "no callback matched!\n");
-                       } else {
-                               switch (status) {
-                               case NOTI_SEND_START:
-                                       break;
-                               case NOTI_SEND_FAIL:
-                                       switch(errorcode) {
-                                       case EMAIL_ERROR_NO_SIM_INSERTED:
-                                       case EMAIL_ERROR_FLIGHT_MODE:
-                                       case EMAIL_ERROR_SMTP_SEND_FAILURE:
-                                       case EMAIL_ERROR_NO_SUCH_HOST:
-                                       case EMAIL_ERROR_CONNECTION_FAILURE:
-                                       case EMAIL_ERROR_CONNECTION_BROKEN:
-                                       case EMAIL_ERROR_INVALID_SERVER:
-                                       case EMAIL_ERROR_NO_RESPONSE:
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                                       cbContext->callback((email_h)cbContext->handle, (email_sending_e)EMAIL_SENDING_FAILED, cbContext->user_data);
-                                               break;
-                               case NOTI_SEND_FINISH:
-                                       cbContext->callback((email_h)cbContext->handle, (email_sending_e)EMAIL_SENDING_SUCCEEDED, cbContext->user_data);
-                                       break;
-                               }
+
+       if (strncasecmp(interface_name, "USER.EMAIL.NETWORKSTATUS", strlen("USER.EMAIL.NETWORKSTATUS")) && 
+               strncasecmp(sender_name, "EMAIL", strlen("EMAIL"))) {
+               LOGE("Invalid interface : [%s]", interface_name);
+               return;
+       }
+
+       g_variant_get(parameters, "(iisii)", 
+                               &status,
+                               &account_id,
+                               &file_id,
+                               &mail_id,
+                               &error_code);
+
+       SECURE_LOGD("status:[%d], account_id:[%d], file_id:[%s], mail_id:[%d], error_code:[%d]", 
+                       status, 
+                       account_id, 
+                       file_id, 
+                       mail_id, 
+                       error_code);
+
+       cbContext = _email_search_callback_by_emailid(mail_id);
+       if (cbContext == NULL) {
+               SECURE_LOGD("no callback matched!\n");
+       } else {
+               SECURE_LOGD("Address : [%p]\n", cbContext->callback);
+               switch (status) {
+               case NOTI_SEND_START:
+                       break;
+                       
+               case NOTI_SEND_FAIL:
+                       switch(error_code)
+                       {
+                       case EMAIL_ERROR_NO_SIM_INSERTED:
+                       case EMAIL_ERROR_FLIGHT_MODE:
+                       case EMAIL_ERROR_SMTP_SEND_FAILURE:
+                       case EMAIL_ERROR_NO_SUCH_HOST:
+                       case EMAIL_ERROR_CONNECTION_FAILURE:
+                       case EMAIL_ERROR_CONNECTION_BROKEN:
+                       case EMAIL_ERROR_INVALID_SERVER:
+                       case EMAIL_ERROR_NO_RESPONSE:
+                               break;
+
+                       default:
+                               break;
                        }
+                       
+                       cbContext->callback((email_h)cbContext->handle,
+                                                               (email_sending_e)EMAIL_SENDING_FAILED,
+                                                               cbContext->user_data);
+                       break;
+
+               case NOTI_SEND_FINISH:
+                       cbContext->callback((email_h)cbContext->handle,
+                                                               (email_sending_e)EMAIL_SENDING_SUCCEEDED,
+                                                               cbContext->user_data);
+                       break;
                }
        }
+
+       LOGE("END\n");
 }
 
-void _email_add_dbus_filter()
+void _email_add_dbus_filter(void)
 {
-       E_DBus_Connection* connection=NULL;
-       DBusError error;
+       LOGD("START\n");
 
-       if (handler != NULL)
+       if (connection != NULL)
                return;
+       
+       GError *error = NULL;
 
-       dbus_error_init(&error);
-
-       connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
        if (NULL == connection) {
+               SECURE_SLOGE("g_bus_get_sync failed : [%s]", error->message);
+               g_error_free(error);
                return;
        }
-
-       if (e_dbus_request_name(connection, "User.Email.NetworkStatus", 0, NULL, NULL) == NULL) {
-               LOGD_IF(DBG_MODE, "Failed in e_dbus_request_name()\n");
-               return;
+       LOGD("connection [%p]", connection);
+
+       g_dbus_return_id = g_dbus_connection_signal_subscribe(connection, 
+                                                                                                       NULL, 
+                                                                                                       "User.Email.NetworkStatus", 
+                                                                                                       "email", 
+                                                                                                       "/User/Email/NetworkStatus",
+                                                                                                       NULL,
+                                                                                                       G_DBUS_SIGNAL_FLAGS_NONE,
+                                                                                                       _monitorSendStatusCb,
+                                                                                                       NULL,
+                                                                                                       NULL);
+       if (g_dbus_return_id == -1) {
+               LOGE("g_dbus_connection_signal_subscribe failed");
        }
 
-       handler = e_dbus_signal_handler_add(connection, NULL, "/User/Email/NetworkStatus", "User.Email.NetworkStatus", "email", _monitorSendStatusCb, NULL);
+       LOGE("END\n");
+}
 
-       if (handler == NULL) {
-               LOGD_IF(DBG_MODE, "Failed in e_dbus_signal_handler_add()");
-       }
+void _email_remove_dbus_filter(void)
+{
+       g_dbus_connection_signal_unsubscribe(connection, g_dbus_return_id);
+       g_object_unref(connection);
+       connection = NULL;
+       g_dbus_return_id = 0;
 }
 
 int _email_copy_mail_data(email_mail_data_t **dst_mail_data, email_mail_data_t *src_mail_data)
 {
+       LOGD("START\n");
        email_mail_data_t *temp_mail_data = NULL;
-
+       
        temp_mail_data = (email_mail_data_t *)calloc(1, sizeof(email_mail_data_t));
        if (temp_mail_data == NULL) {
-               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create email_mail_data_t", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
+               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create email_mail_data_t", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+               return EMAILS_ERROR_OUT_OF_MEMORY;
        }
 
-       temp_mail_data->mail_id                 = src_mail_data->mail_id;
-       temp_mail_data->account_id              = src_mail_data->account_id;
-       temp_mail_data->mailbox_id              = src_mail_data->mailbox_id;
-       temp_mail_data->mailbox_type            = src_mail_data->mailbox_type;
-       temp_mail_data->subject                 = EM_SAFE_STRDUP(src_mail_data->subject);
-       temp_mail_data->date_time               = src_mail_data->date_time;
+       temp_mail_data->mail_id          = src_mail_data->mail_id;
+       temp_mail_data->account_id            = src_mail_data->account_id;
+       temp_mail_data->mailbox_id            = src_mail_data->mailbox_id;
+       temp_mail_data->mailbox_type        = src_mail_data->mailbox_type;
+       temp_mail_data->subject          = EM_SAFE_STRDUP(src_mail_data->subject);
+       temp_mail_data->date_time              = src_mail_data->date_time;
        temp_mail_data->server_mail_status      = src_mail_data->server_mail_status;
        temp_mail_data->server_mailbox_name     = EM_SAFE_STRDUP(src_mail_data->server_mailbox_name);
-       temp_mail_data->server_mail_id          = EM_SAFE_STRDUP(src_mail_data->server_mail_id);
-       temp_mail_data->message_id              = EM_SAFE_STRDUP(src_mail_data->message_id);
+       temp_mail_data->server_mail_id    = EM_SAFE_STRDUP(src_mail_data->server_mail_id);
+       temp_mail_data->message_id            = EM_SAFE_STRDUP(src_mail_data->message_id);
        temp_mail_data->full_address_from       = EM_SAFE_STRDUP(src_mail_data->full_address_from);
        temp_mail_data->full_address_reply      = EM_SAFE_STRDUP(src_mail_data->full_address_reply);
-       temp_mail_data->full_address_to         = EM_SAFE_STRDUP(src_mail_data->full_address_to);
-       temp_mail_data->full_address_cc         = EM_SAFE_STRDUP(src_mail_data->full_address_cc);
-       temp_mail_data->full_address_bcc        = EM_SAFE_STRDUP(src_mail_data->full_address_bcc);
+       temp_mail_data->full_address_to  = EM_SAFE_STRDUP(src_mail_data->full_address_to);
+       temp_mail_data->full_address_cc  = EM_SAFE_STRDUP(src_mail_data->full_address_cc);
+       temp_mail_data->full_address_bcc        = EM_SAFE_STRDUP(src_mail_data->full_address_bcc);
        temp_mail_data->full_address_return     = EM_SAFE_STRDUP(src_mail_data->full_address_return);
        temp_mail_data->email_address_sender    = EM_SAFE_STRDUP(src_mail_data->email_address_sender);
        temp_mail_data->email_address_recipient = EM_SAFE_STRDUP(src_mail_data->email_address_recipient);
-       temp_mail_data->alias_sender            = EM_SAFE_STRDUP(src_mail_data->alias_sender);
-       temp_mail_data->alias_recipient         = EM_SAFE_STRDUP(src_mail_data->alias_recipient);
+       temp_mail_data->alias_sender        = EM_SAFE_STRDUP(src_mail_data->alias_sender);
+       temp_mail_data->alias_recipient  = EM_SAFE_STRDUP(src_mail_data->alias_recipient);
        temp_mail_data->body_download_status    = src_mail_data->body_download_status;
-       temp_mail_data->file_path_plain         = EM_SAFE_STRDUP(src_mail_data->file_path_plain);
-       temp_mail_data->file_path_html          = EM_SAFE_STRDUP(src_mail_data->file_path_html);
+       temp_mail_data->file_path_plain  = EM_SAFE_STRDUP(src_mail_data->file_path_plain);
+       temp_mail_data->file_path_html    = EM_SAFE_STRDUP(src_mail_data->file_path_html);
        temp_mail_data->file_path_mime_entity   = EM_SAFE_STRDUP(src_mail_data->file_path_mime_entity);
-       temp_mail_data->mail_size               = src_mail_data->mail_size;
-       temp_mail_data->flags_seen_field        = src_mail_data->flags_seen_field;
+       temp_mail_data->mail_size              = src_mail_data->mail_size;
+       temp_mail_data->flags_seen_field        = src_mail_data->flags_seen_field;
        temp_mail_data->flags_deleted_field     = src_mail_data->flags_deleted_field;
        temp_mail_data->flags_flagged_field     = src_mail_data->flags_flagged_field;
        temp_mail_data->flags_answered_field    = src_mail_data->flags_answered_field;
        temp_mail_data->flags_recent_field      = src_mail_data->flags_recent_field;
        temp_mail_data->flags_draft_field       = src_mail_data->flags_draft_field;
        temp_mail_data->flags_forwarded_field   = src_mail_data->flags_forwarded_field;
-       temp_mail_data->DRM_status              = src_mail_data->DRM_status;
-       temp_mail_data->priority                = src_mail_data->priority;
-       temp_mail_data->save_status             = src_mail_data->save_status;
-       temp_mail_data->lock_status             = src_mail_data->lock_status;
-       temp_mail_data->report_status           = src_mail_data->report_status;
-       temp_mail_data->attachment_count        = src_mail_data->attachment_count;
+       temp_mail_data->DRM_status            = src_mail_data->DRM_status;
+       temp_mail_data->priority                = src_mail_data->priority;
+       temp_mail_data->save_status          = src_mail_data->save_status;
+       temp_mail_data->lock_status          = src_mail_data->lock_status;
+       temp_mail_data->report_status      = src_mail_data->report_status;
+       temp_mail_data->attachment_count        = src_mail_data->attachment_count;
        temp_mail_data->inline_content_count    = src_mail_data->inline_content_count;
-       temp_mail_data->thread_id               = src_mail_data->thread_id;
+       temp_mail_data->thread_id              = src_mail_data->thread_id;
        temp_mail_data->thread_item_count       = src_mail_data->thread_item_count;
-       temp_mail_data->preview_text            = EM_SAFE_STRDUP(src_mail_data->preview_text);
+       temp_mail_data->preview_text        = EM_SAFE_STRDUP(src_mail_data->preview_text);
        temp_mail_data->meeting_request_status  = src_mail_data->meeting_request_status;
-       temp_mail_data->message_class           = src_mail_data->message_class;
-       temp_mail_data->digest_type             = src_mail_data->digest_type;
-       temp_mail_data->smime_type              = src_mail_data->smime_type;
+       temp_mail_data->message_class      = src_mail_data->message_class;
+       temp_mail_data->digest_type          = src_mail_data->digest_type;
+       temp_mail_data->smime_type            = src_mail_data->smime_type;
 
        *dst_mail_data = temp_mail_data;
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
 int _email_copy_mailbox(email_mailbox_t **dst_mailbox, email_mailbox_t *src_mailbox)
 {
+       LOGD("START\n");
        email_mailbox_t *temp_mailbox = NULL;
 
        temp_mailbox = (email_mailbox_t *)calloc(1,sizeof(email_mailbox_t));
-       if (temp_mailbox == NULL) {
-               LOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create mailbox", __FUNCTION__, EMAIL_ERROR_OUT_OF_MEMORY);
-               return EMAIL_ERROR_OUT_OF_MEMORY;
+       if (temp_mailbox == NULL)
+       {
+               SECURE_SLOGE("[%s] OUT_OF_MEMORY(0x%08x) : fail to create mailbox", __FUNCTION__, EMAILS_ERROR_OUT_OF_MEMORY);
+               return EMAILS_ERROR_OUT_OF_MEMORY;
        }
 
-       temp_mailbox->mailbox_id                    = src_mailbox->mailbox_id;
-       temp_mailbox->mailbox_name                   = EM_SAFE_STRDUP(src_mailbox->mailbox_name);
-       temp_mailbox->mailbox_type                  = src_mailbox->mailbox_type;
-       temp_mailbox->alias                         = EM_SAFE_STRDUP(src_mailbox->alias);
-       temp_mailbox->unread_count                  = src_mailbox->unread_count;
+       temp_mailbox->mailbox_id                    = src_mailbox->mailbox_id;
+       temp_mailbox->mailbox_name                 = EM_SAFE_STRDUP(src_mailbox->mailbox_name);
+       temp_mailbox->mailbox_type                = src_mailbox->mailbox_type;
+       temp_mailbox->alias                      = EM_SAFE_STRDUP(src_mailbox->alias);
+       temp_mailbox->unread_count                = src_mailbox->unread_count;
        temp_mailbox->total_mail_count_on_local     = src_mailbox->total_mail_count_on_local;
        temp_mailbox->total_mail_count_on_server    = src_mailbox->total_mail_count_on_server;
-       temp_mailbox->local                         = src_mailbox->local;
-       temp_mailbox->account_id                    = src_mailbox->account_id;
-       temp_mailbox->mail_slot_size                = src_mailbox->mail_slot_size;
-       temp_mailbox->last_sync_time                = src_mailbox->last_sync_time;
+       temp_mailbox->local                      = src_mailbox->local;
+       temp_mailbox->account_id                    = src_mailbox->account_id;
+       temp_mailbox->mail_slot_size            = src_mailbox->mail_slot_size;
+       temp_mailbox->last_sync_time            = src_mailbox->last_sync_time;
 
        *dst_mailbox = temp_mailbox;
 
-       return EMAIL_ERROR_NONE;
+       LOGD("END\n");
+       return EMAILS_ERROR_NONE;
 }
 
+
 int _email_copy_handle(email_s **dst_handle, email_s *src_handle)
 {
-       int ret = EMAIL_ERROR_NONE;
+       LOGD("START\n");
+       int ret = EMAILS_ERROR_NONE;
        email_s *msg_s = NULL;
-
+       
        msg_s = (email_s *)calloc(1,sizeof(email_s));
-       if ((ret = _email_copy_mail_data(&msg_s->mail, src_handle->mail)) != EMAIL_ERROR_NONE) {
-               LOGE("[%s] _email_copy_mail_data failed", __FUNCTION__);
+       if (msg_s == NULL) {
+               SECURE_SLOGE("[%s] calloc failed", __FUNCTION__);
+               ret = EMAILS_ERROR_OUT_OF_MEMORY;
+               return ret;
+       }
+
+       if ((ret = _email_copy_mail_data(&msg_s->mail, src_handle->mail)) != EMAILS_ERROR_NONE) {
+               SECURE_SLOGE("[%s] _email_copy_mail_data failed", __FUNCTION__);
                email_destroy_message((email_h)msg_s); /*prevent 25431*/
                return ret;
        }
 
-       if ((ret = _email_copy_mailbox(&msg_s->mbox, src_handle->mbox)) != EMAIL_ERROR_NONE) {
-               LOGE("[%s] _email_copy_mailbox failed", __FUNCTION__);
+       if ((ret = _email_copy_mailbox(&msg_s->mbox, src_handle->mbox)) != EMAILS_ERROR_NONE) {
+               SECURE_SLOGE("[%s] _email_copy_mailbox failed", __FUNCTION__);
                email_destroy_message((email_h)msg_s); /*prevent 25431*/
                return ret;
        }
 
        *dst_handle = msg_s;
+       LOGD("END\n");
        return ret;
 }
 
 void _email_free_cb_context(email_cb_context *cbcontext)
 {
+       LOGD("START\n");
        if(cbcontext == NULL) {
-               LOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAIL_ERROR_INVALID_PARAMETER);
+               SECURE_SLOGE("[%s] INVALID_PARAMETER(0x%08x) : msg is NULL.", __FUNCTION__, EMAILS_ERROR_INVALID_PARAMETER);
                return;
        }
-       
+               
        email_s* msg_s = cbcontext->handle;
 
        if(msg_s)
@@ -864,4 +1056,5 @@ void _email_free_cb_context(email_cb_context *cbcontext)
        }
 
        cbcontext = NULL;
+       LOGD("END\n");
 }