Beispiel #1
0
        private void createCampaignActivityEM(Entity entity, string authentication, IOrganizationService service)
        {
            Guid                       campaignActivityId = entity.Id;
            EmEmailCampaign            eCampaign;
            OrganizationServiceContext orgcontext = new OrganizationServiceContext(service);
            int sendingType = 1;

            try
            {
                if (entity.Contains("new_sendingtype"))
                {
                    sendingType = ((OptionSetValue)entity["new_sendingtype"]).Value;
                }

                var query = (from r in orgcontext.CreateQuery("campaignactivity")
                             where (Guid)r["activityid"] == campaignActivityId
                             select new
                {
                    campaign = r.Attributes.Contains("regardingobjectid") ? r["regardingobjectid"] : new EntityReference("campaign", Guid.Empty),
                    CampaignSubject = r.Attributes.Contains("subject") ? r["subject"] : string.Empty
                }).FirstOrDefault();

                if (query != null)
                {
                    eCampaign = new EmEmailCampaign();

                    // Periyodik
                    if (sendingType == 2)
                    {
                        eCampaign.CampaignType = EmEmailCampaignType.SingleShot;
                        eCampaign.HtmlMessage  = GetHtmlAttachment(Globals.BirthdayCampaignId, service);
                    }
                    else // Standart
                    {
                        eCampaign.CampaignType = EmEmailCampaignType.Template;
                        eCampaign.HtmlMessage  = "<html><head></head><body></body></html>";
                    }

                    eCampaign.CampaignID        = campaignActivityId.ToString().Replace("{", "").Replace("}", "").Replace("-", "").ToUpper();
                    eCampaign.ClickThroughFlag  = true;
                    eCampaign.FromAddress       = Globals.EuromsgFromAddressLive;
                    eCampaign.FromName          = Globals.EuromsgFromNameLive;
                    eCampaign.GoogleAnalytics   = false;
                    eCampaign.GoogleUtmCampaign = "";
                    eCampaign.GoogleUtmContent  = "";
                    eCampaign.GoogleUtmMedium   = "";
                    eCampaign.GoogleUtmSource   = "";
                    eCampaign.GoogleUtmTerm     = "";
                    eCampaign.Locked            = false;
                    eCampaign.Name            = ((EntityReference)query.campaign).Name;
                    eCampaign.OmnitureFlag    = false;
                    eCampaign.RateFlag        = false;
                    eCampaign.ReadFlag        = true;
                    eCampaign.ReplyAddress    = Globals.EuromsgReplyAddressLive;
                    eCampaign.Speed           = 1;
                    eCampaign.Subject         = new string[1];
                    eCampaign.Subject[0]      = query.CampaignSubject.ToString();
                    eCampaign.UniqueEmailFlag = false;
                    eCampaign.ShareThisFlag   = false;

                    EmCampaignFuncRes emResult = campaign.CreateEmailCampaign(authentication, ref eCampaign);

                    if (emResult.Code != "00") // Başarısız ise
                    {
                        if (emResult.Message == "Email message has a high spam score. This e-mail campaign can't be created." ||
                            emResult.Message == "Not a valid from name!")
                        {
                            throw new InvalidPluginExecutionException(emResult.Message);
                        }
                        else
                        {
                            throw new InvalidPluginExecutionException(emResult.Message + "\n" + emResult.DetailedMessage);
                        }
                    }

                    LogoutEM(authentication);
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.ToString());
            }
        }