コード例 #1
0
ファイル: MailAdapter.cs プロジェクト: ZhouAnPing/Mail
        /// <summary>
        /// Get feedback information
        /// </summary>
        /// <param name="customerName">customer Name</param>
        /// <param name="startTime">StartTime</param>
        /// <param name="endTime">End time</param>
        /// <param name="searchConditions">searchConditions</param>
        /// <returns>all of the information, including sent, bounced, 
        /// clicked and opened</returns>
        private XDocument queryFeedbackInfo(String customerName, DateTime startTime, DateTime endTime, Hashtable searchConditions)
        {
            //String BouncedFormat = "email"; "name"; "Email address of bounced message"; "Bounce date"; "Bounce code"; "Bounce decription"; "Hard bounce"; "Job ID";
            //String OpenedFormat  = "email"; "name"; "Rendered"; "Opened"; "IP address"; "Browser"; "OS"; "Job ID";
            //String ClickedFormat = "email"; "name"; "clicked";  "linkid"; "IP address"; "browser";       "Job ID"
            if (logger.IsDebugEnabled)
            {
                logger.Debug("queryFeedbackInfo:customerName=" + customerName + ",startTime=" + startTime.ToLongTimeString() + ",endTime=" + endTime.ToLongTimeString());
            }
            String result;
            XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"));
            try
            {
                Action.ContactDatabaseAction contactDatabaseAction = new ContactDatabaseAction(client, userName, password, oWebProxy);
                String contactDatabaseId = contactDatabaseAction.getDatabaseIdByName(customerName);

                ContactDatabaseFieldAction contactDatabaseFieldAction = new ContactDatabaseFieldAction(client, userName, password, oWebProxy);
                Hashtable ht = contactDatabaseFieldAction.getContactDatabaseFields(contactDatabaseId);
                //String toEmailFieldId = contactDatabaseFieldAction.getDatabaseEmailId(contactDatabaseId);

                cn.tripolis.dialogue.export.ContactExportRequest request = new cn.tripolis.dialogue.export.ContactExportRequest
                    {
                        contactDatabaseId = contactDatabaseId,
                        timeRange = new cn.tripolis.dialogue.export.TimeRange { startTime = startTime, endTime = endTime }
                    };

                var xroot = new XElement("FeedbackReport");

                logger.Debug("******exportSent*****");
                request.returnContactFields = new cn.tripolis.dialogue.export.ReturnContactFields
                    {
                        contactDatabaseFieldIds = new String[ht.Keys.Count]
                    };
                int index = 0;
                foreach (String value in ht.Values)
                {
                    request.returnContactFields.contactDatabaseFieldIds.SetValue(value, index++);
                }
                RawDataResponse response = exportService.exportSent(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                XElement element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportSent", searchConditions);
                xroot.Add(element);

                request.returnContactFields.contactDatabaseFieldIds = null;


                request.returnContactFields = new cn.tripolis.dialogue.export.ReturnContactFields
                    {
                        returnAllContactFields = true,
                        returnAllContactFieldsSpecified = true
                    };

                logger.Debug("******exportBounced*****");
                response = exportService.exportBounced(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportBounced", searchConditions);
                xroot.Add(element);


                logger.Debug("******exportOpened*****");
                response = exportService.exportOpened(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportOpened", searchConditions);
                xroot.Add(element);


                logger.Debug("******exportClicked*****");
                response = exportService.exportClicked(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportClicked", searchConditions);
                xroot.Add(element);
                doc.Add(xroot);
                result = doc.ToString();
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                result = ex.Detail.InnerXml;
                throw new Exception(result);
            }
            catch (Exception ex)
            {
                result = ex.Message;
                throw new Exception(result);
            }
            if (logger.IsDebugEnabled)
            {
                logger.Debug(result);
            }
            return doc;
        }
コード例 #2
0
ファイル: DialogueService.cs プロジェクト: ZhouAnPing/Mail
        /// <summary>
        /// Get feedback information
        /// </summary>
        /// <param name="contactDatabaseId">contactDatabase Id</param>
        /// <param name="startTime">StartTime</param>
        /// <param name="endTime">End time</param>
        /// <param name="searchConditions">searchConditions</param>
        /// <returns>all of the information, including sent, bounced, 
        /// clicked and opened</returns>
        private XDocument queryFeedbackInfo(String contactDatabaseId, DateTime startTime, DateTime endTime, Hashtable searchConditions)
        {
            //String BouncedFormat = "email"; "name"; "Email address of bounced message"; "Bounce date"; "Bounce code"; "Bounce decription"; "Hard bounce"; "Job ID";
            //String OpenedFormat  = "email"; "name"; "Rendered"; "Opened"; "IP address"; "Browser"; "OS"; "Job ID";
            //String ClickedFormat = "email"; "name"; "clicked";  "linkid"; "IP address"; "browser";       "Job ID"
            if (logger.IsDebugEnabled)
            {
                logger.Debug("queryFeedbackInfo:contactDatabaseId=" + contactDatabaseId + ",startTime=" + startTime.ToLongTimeString() + ",endTime=" + endTime.ToLongTimeString());
            }
            String result;
            TripolisDialogueAdapter.DAO.FeedbackBO feedbackBO = null;
            FeedbackDao feedbackDao = new FeedbackDao();

            XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"));
            try
            {
                //Action.ContactDatabaseAction contactDatabaseAction = new ContactDatabaseAction(client, userName, password);
                // String contactDatabaseId = contactDatabaseAction.getDatabaseIdByName(customerName);

                ContactDatabaseFieldAction contactDatabaseFieldAction = new ContactDatabaseFieldAction(client, userName, password, oWebProxy);
                Hashtable ht = contactDatabaseFieldAction.getContactDatabaseFields(contactDatabaseId);
                //String toEmailFieldId = contactDatabaseFieldAction.getDatabaseEmailId(contactDatabaseId);
                cn.tripolis.dialogue.export.ContactExportRequest request = new cn.tripolis.dialogue.export.ContactExportRequest
                    {
                        contactDatabaseId = contactDatabaseId,
                        timeRange = new cn.tripolis.dialogue.export.TimeRange { startTime = startTime, endTime = endTime }
                    };

                var xroot = new XElement("FeedbackReport");

                logger.Debug("******exportSent*****");
  
                request.returnContactFields = new cn.tripolis.dialogue.export.ReturnContactFields
                    {
                        contactDatabaseFieldIds = new String[ht.Keys.Count]
                    };
                int index = 0;
                foreach (String value in ht.Values)
                {
                    request.returnContactFields.contactDatabaseFieldIds.SetValue(value, index++);
                }
                RawDataResponse response = exportService.exportSent(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                XElement element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportSent", searchConditions);
                xroot.Add(element);

                System.Data.DataSet ds = Util.CXmlToDataSet(element.ToString().ToLower());
                if (ds != null && ds.Tables.Count > 0)
                {
                    foreach (System.Data.DataRow row in ds.Tables[0].Rows)
                    {
                        //[jobId],[email],[opentime],[ipAddress],[browse],[os],[rendered]
                        feedbackBO = new DAO.FeedbackBO();
                        feedbackBO.jobId = row["jobid"].ToString();
                        feedbackBO.email = row["email"].ToString();
                        //feedbackBO.opentime = row["opentime"];
                        //feedbackBO.ipAddress = row["ipAddress"];
                        //feedbackBO.browse = row["browse"];
                        //feedbackBO.os = row["os"];
                        //feedbackBO.rendered = row["rendered"];
                        //feedbackDao.Feedback_GetInfo();
                        feedbackDao.Feedback_updateInfoForSent(feedbackBO);
                    }

                }

                request.returnContactFields.contactDatabaseFieldIds = null;
                request.returnContactFields = new cn.tripolis.dialogue.export.ReturnContactFields
                    {
                        returnAllContactFields = true,
                        returnAllContactFieldsSpecified = true
                    };

                logger.Debug("******exportBounced*****");
                response = exportService.exportBounced(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportBounced", searchConditions);
                xroot.Add(element);


               ds = Util.CXmlToDataSet(element.ToString().ToLower());
               if (ds != null && ds.Tables.Count > 0)
               {
                   foreach (System.Data.DataRow row in ds.Tables[0].Rows)
                   {
                       //  [jobId],[email],[bouncedate],[bouncecode],[bounceDecription],[hardbounce]
                       feedbackBO = new DAO.FeedbackBO();
                       feedbackBO.jobId = row["jobid"].ToString();
                       feedbackBO.email = row["email"].ToString();
                       feedbackBO.bouncedate = row["bouncedate"].ToString();
                       feedbackBO.bouncecode = row["bouncecode"].ToString();
                       feedbackBO.bounceDecription = row["bouncedescription"].ToString();
                       feedbackBO.hardbounce = row["hardbounce"].ToString();
                       feedbackDao.Feedback_updateInfoForBounced(feedbackBO);
                   }
               }
                logger.Debug("******exportOpened*****");
                response = exportService.exportOpened(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportOpened", searchConditions);
                xroot.Add(element);

                 ds = Util.CXmlToDataSet(element.ToString().ToLower());
                 if (ds != null && ds.Tables.Count > 0)
                 {
                     foreach (System.Data.DataRow row in ds.Tables[0].Rows)
                     {
                         //[jobId],[email],[opentime],[ipAddress],[browse],[os],[rendered]
                         feedbackBO = new DAO.FeedbackBO();
                         feedbackBO.jobId = row["jobid"].ToString();
                         feedbackBO.email = row["email"].ToString();
                         feedbackBO.opentime = row["opened"].ToString();
                         feedbackBO.ipAddress = row["ipAddress"].ToString();
                         feedbackBO.browse = row["browser"].ToString();
                         feedbackBO.os = row["os"].ToString();
                         feedbackBO.rendered = row["rendered"].ToString();
                         feedbackDao.Feedback_updateInfoForOpened(feedbackBO);
                     }
                 }


                logger.Debug("******exportClicked*****");
                response = exportService.exportClicked(request);
                result = System.Text.Encoding.UTF8.GetString(response.data);
                element = Util.convertCsvToXmlElement(result.Replace("\"", ""), new[] { ";" }, "exportClicked", searchConditions);
                xroot.Add(element);

                  ds = Util.CXmlToDataSet(element.ToString().ToLower());
                 if (ds != null && ds.Tables.Count > 0)
                 {
                     foreach (System.Data.DataRow row in ds.Tables[0].Rows)
                     {
                         //[jobId],[email],[linkid],[ipAddress],[browse],[clicked]
                         feedbackBO = new DAO.FeedbackBO();
                         feedbackBO.jobId = row["jobid"].ToString();
                         feedbackBO.email = row["email"].ToString();
                         feedbackBO.linkid = row["linkid"].ToString();
                         feedbackBO.ipAddress = row["ipAddress"].ToString();
                         feedbackBO.browse = row["browser"].ToString();
                         feedbackBO.clicked = row["clicked"].ToString();
                         feedbackDao.Feedback_updateInfoForClicked(feedbackBO);
                     }
                 }

                doc.Add(xroot);
                result = doc.ToString();
            }
            catch (System.Web.Services.Protocols.SoapException ex)
            {
                result = ex.Detail.InnerXml;
                throw new Exception(result);
            }

            catch (Exception ex)
            {
                result = ex.Message;
                throw new Exception(result);
            }
            if (logger.IsDebugEnabled)
            {
                logger.Debug(result);
            }
            return doc;
        }