Beispiel #1
0
 internal static void CaliculateExecutionTime(ref DateTime executionTime, Alert alert, bool isRepeat)
 {
     try
     {
             int num = (isRepeat || (alert.PeriodPosition == PeriodPosition.After)) ? -1 : 1;
             int periodAmount = num * (isRepeat ? alert.RepeatInterval : alert.PeriodQty);
             PeriodType periodUnit = isRepeat ? alert.RepeatType : alert.PeriodType;
             executionTime = CaliculatePeriod(executionTime, periodUnit, periodAmount);
     }
     catch { }
 }
Beispiel #2
0
        internal void SendDelayedMessage(DelayedAlert delayedAlert, Alert alert, SPListItem item)
        {
            try
            {               
                MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(delayedAlert.AlertType);
                string toAddress = GetRecipientEmailAddresses(alert.ToAddress, item);
                string ccAddress = GetRecipientEmailAddresses(alert.CcAddress, item);
                string fromAddress = GetRecipientEmailAddresses(alert.FromAdderss, item);
                string subject = delayedAlert.Subject;
                string body = delayedAlert.Body;
                //string subject = ReplacePlaceHolders(mtObject.Template.Subject, item);
                //string body = ReplacePlaceHolders(mtObject.Template.Body, item);
                string smtpSName = GetSMTPServer(item);
                SendMail(smtpSName,
                         toAddress,
                         fromAddress,
                         ccAddress,
                         subject,
                         body,
                         null);
            }
            catch { }
            //try
            //{
            //    SPListItem item = null;
            //    using (SPSite site = new SPSite(this.siteCollectionURL))
            //    {
            //        site.CatchAccessDeniedException = false;
            //        try
            //        {
            //            using (SPWeb web = site.OpenWeb(alert.WebId))
            //            {
            //               // item = ScanningUtilities.GetItemFromList(web, alert.ListId, delayedAlert.Item.ID);
            //                //if (item == null)
            //                {
            //                    item = delayedAlert.Item;
            //                }

            //            }
            //        }
            //        catch 
            //        {
            //            item = delayedAlert.Item;
            //        }

            //    }
            //}
            //catch 
            //{
            //}
        }
        bool isValidTimerAlert(Alert alert, SPWeb web, DateTime dtWebTime)
        {

            try
            {
                if (alert.ImmediateBusinessDays.Count > 0)
                {
                    if (!(Utilities.ContainsDay(alert.ImmediateBusinessDays, Convert.ToInt32(web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).DayOfWeek))) && (alert.BusinessStartHour <= web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).Hour) && (alert.BusinessendtHour > web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).Hour))
                    {
                        return false;
                    }
                }

                else if (!alert.ImmidiateAlways)
                {
                    //if (!(Utilities.ContainsDay(alert.ImmediateBusinessDays, Convert.ToInt32(web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).DayOfWeek))) && (alert.BusinessStartHour <= web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).Hour) && (alert.BusinessendtHour > web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).Hour))
                    if (!((alert.SendHour == dtWebTime.Hour) && (((alert.SendType == SendType.Daily) && Utilities.ContainsDay(alert.DailyBusinessDays, Convert.ToInt32(dtWebTime.DayOfWeek))) || (alert.SendDay == Convert.ToInt32(dtWebTime.DayOfWeek)))))
                    {
                        return false;
                    }
                }
                else
                {
                    return true;
                }

            }
            catch
            {

            }
            return true;
        }
        private void ExecuteTimerAlert(SPWeb web, SPList list, Alert alert)
        {
            try
            {
                if (web != null && list != null)
                {


                    DateTime startTime = web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow).AddMinutes(-30.0);
                    DateTime endTime = web.RegionalSettings.TimeZone.UTCToLocalTime(DateTime.UtcNow);
                    TimerJobHelper.CaliculateExecutionTime(ref startTime, alert, false);
                    TimerJobHelper.CaliculateExecutionTime(ref endTime, alert, false);

                    int num = !alert.Repeat ? 1 : (alert.RepeatCount + 1);
                    int num2 = 1;
                    while (num2 <= num)
                    {

                        //We need to get all alerts which are fall
                        SPQuery query = new SPQuery();
                        query.Query = string.Format("<Where>" +
                                                      "<And>" +
                                                       "<Gt>" +
                                                        "<FieldRef Name=\"{0}\" />" +
                                                          "<Value Type=\"DateTime\" IncludeTimeValue=\"TRUE\">{1}</Value>" +
                                                        "</Gt>" +
                                                        "<Leq>" +
                                                          "<FieldRef Name=\"{0}\" />" +
                                                          "<Value Type=\"DateTime\" IncludeTimeValue=\"TRUE\">{2}</Value>" +
                                                        "</Leq>" +
                                                       "</And>" +
                                                       "</Where>",
                                                        new object[] { alert.DateColumnName, SPUtility.CreateISO8601DateTimeFromSystemDateTime(startTime), SPUtility.CreateISO8601DateTimeFromSystemDateTime(endTime) });
                        SPListItemCollection items = list.GetItems(query);
                        if (items.Count > 0)
                        {
                            foreach (SPListItem item in items)
                            {
                                if (alert.IsValid(item, AlertEventType.DateColumn, null))
                                {
                                    Notifications mailSender = new Notifications();
                                    //mailSender.SendAlert(alert, ChangeTypes.DateColumn, item2, null);
                                    mailSender.SendMail(alert, AlertEventType.DateColumn, item);

                                }
                                else
                                {
                                    //Some conditions are not passthrough
                                }
                            }
                        }
                        else
                        { //No items returned as part of Query
                        }
                        if (num2 < num)
                        {
                            TimerJobHelper.CaliculateExecutionTime(ref startTime, alert, true);
                            TimerJobHelper.CaliculateExecutionTime(ref endTime, alert, true);
                        }
                        num2++;
                    }
                }
            }
            catch
            {
                //Error occured while executing timer alerts
            }
        }
Beispiel #5
0
 public void SendDelayedMessage2(DelayedAlert delayedAlert, Alert alert, SPListItem item)
 {
     
     Notifications notificationSender = new Notifications();
     try
     {
         
         MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(delayedAlert.AlertType);
         toAddress = notificationSender.GetRecipientEmailAddresses(alert.ToAddress, item);
         ccAddress = notificationSender.GetRecipientEmailAddresses(alert.CcAddress, item);
         fromAddress = notificationSender.GetRecipientEmailAddresses(alert.FromAdderss, item);
         subject = delayedAlert.Subject;
         body += delayedAlert.Body;
         smtpSName = notificationSender.GetSMTPServer(item);
         //SendMail(smtpSName,
         //         toAddress,
         //         fromAddress,
         //         ccAddress,
         //         subject,
         //         body,
         //         null);
     }
     catch { }
 }
Beispiel #6
0
 internal void ExecuteDelayedMessages(Alert alert)
 {
     try
     {
         SPQuery query = new SPQuery();
         query.Query  = string.Format("<Where><Eq><FieldRef Name=\"{0}\" LookupId=\"TRUE\"/><Value Type=\"Lookup\">{1}</Value></Eq></Where>", "Alert", alert.Id);
         SPListItemCollection items = this.delayedAlertList.GetItems(query);
         if (items.Count > 0)
         {
             foreach (SPListItem item in items)
             {
                 try
                 {
                     try
                     {
                         if (alert.SendAsSingleMessage)
                         {
                             DelayedAlert delayedAlert = new DelayedAlert(item);
                             Notifications notificationSender = new Notifications();
                             SendDelayedMessage2(delayedAlert, alert,item);                          
                         }
                         else
                         {
                             DelayedAlert delayedAlert = new DelayedAlert(item);
                             Notifications notificationSender = new Notifications();
                             notificationSender.SendDelayedMessage(delayedAlert, alert,item);                            
                         }
                     }
                     catch 
                     {
                     }
                     continue;
                 }
                 finally
                 {
                     try
                     {
                         //Delete the delayed alert after completion
                     }
                     catch { }
                 }
             }
             if (alert.SendAsSingleMessage)
             {
                 SendMail(smtpSName, toAddress, fromAddress,ccAddress,subject,body,null);
             }
         }
         else
         {
             //No delayed alert found in the Delayed alert list
         }
     }
     catch
     {  }
 }
Beispiel #7
0
 /// <summary>
 /// Get Alert from its item id
 /// </summary>
 /// <param name="alertId"></param>
 /// <param name="mtManager"></param>
 /// <returns></returns>
 internal Alert GetAlertFromID(string alertId,MailTemplateManager mtManager)
 {
     Alert alert = null;
     try
     {
        SPListItem item = this.alertList.GetItemById(Convert.ToInt32(alertId));
        alert = new Alert(item, mtManager);
     }
     catch 
     { 
         //error occured while entering
     }
     return alert;
 }
Beispiel #8
0
        /// <summary>
        /// Get the alerts changed after last sync
        /// </summary>
        /// <param name="since"></param>
        /// <returns></returns>
        internal Dictionary<int, Alert> GetAlertsChangesSince(DateTime since)
        {
            Dictionary<int, Alert> modifiedAlerts =   new Dictionary<int, Alert>();
            try
            {
                if (since < alertList.Created || since < DateTime.UtcNow.AddDays(-60))
                {
                    //By default, the change log retains data for 60 days. You can configure the retention period by setting the ChangeLogRetentionPeriod property.
                    since =   alertList.Created;

                    //since = DateTime.UtcNow.AddDays(-30);
                }

                //SPChangeToken startToken = new SPChangeToken(SPChangeCollection.CollectionScope.List, list.ID, DateTime.UtcNow);

                //SPChangeToken endToken = new SPChangeToken(SPChangeCollection.CollectionScope.List,list.ID, new DateTime(2008, 10, 18));



                SPChangeToken token = new SPChangeToken(SPChangeCollection.CollectionScope.List, this.alertList.ID, since.ToUniversalTime());
                //Dictionary<int,Alert> modifiedAlerts = new Dictionary<int,Alert>();
                foreach (SPChange change in alertList.GetChanges(token))
                {
                    if (!(change is SPChangeItem))
                    {
                        continue;
                    }
                    SPChangeItem item = change as SPChangeItem;
                    if (!modifiedAlerts.ContainsKey(item.Id))
                    {
                        Alert alert = null;
                        //if(item.ChangeType  != 3)
                        try
                        {
                            alert = new Alert(alertList.GetItemById(item.Id), new MailTemplateManager(alertList.ParentWeb));
                           
                        }
                        catch
                        {
                           //item has been deleted

                        }

                        //if (alert != null && !alert.ImmidiateAlways)
                        //{
                        //    alert = null;
                        //}

                        modifiedAlerts.Add(item.Id, alert);
                    }
                    //Check if the alert is not immediate and all the stuff which are not eligible for timer based alerts
                }
            }
            catch { }
            return modifiedAlerts;
        }
Beispiel #9
0
        /// <summary>
        /// Serialize Alert information into XML format
        /// </summary>
        /// <param name="alert"></param>
        /// <returns></returns>
        private static string SerializeAlertMetaData(Alert alert)
        {
            XmlDocument xmlDoc = new XmlDocument();
            try
            {
                XmlNode rootNode = xmlDoc.CreateElement("AlertInformation");
                xmlDoc.AppendChild(rootNode);

                
                //General Properties
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ToAddress, alert.ToAddress));
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.FromAddress, alert.FromAdderss));
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.CcAddress, alert.CcAddress));
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.BccAddress, alert.BccAddress));

                // Create evaluation criteria
                XmlNode xEvaluation = rootNode.AppendChild(xmlDoc.CreateElement(XMLElementNames.EvaluationCriteria));
                xEvaluation.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.EvaluationCustom, alert.CustomEvaluation ? "true" : "false"));
                if (alert.CustomEvaluation)
                {
                    XmlNode xCustomData = xEvaluation.AppendChild(xmlDoc.CreateElement(XMLElementNames.CustomEvaluationData));
                    xCustomData.InnerXml = alert.CustomEvaluationData;
                }
                else
                {
                    //Create Conditions
                    XmlNode xConditions = xEvaluation.AppendChild(xmlDoc.CreateElement(XMLElementNames.ConditionsRootNodeName));
                    foreach (Condition condition in alert.Conditions)
                    {
                        XmlNode xCondition = xConditions.AppendChild(xmlDoc.CreateElement(XMLElementNames.ConditionChildNodeName));
                        xCondition.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.ConditionFieldTagName, condition.FieldName));
                        xCondition.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.ConditionOperatorTagName, Convert.ToString(condition.ComparisionOperator)));
                        xCondition.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.ConditionValueTagName, condition.StrValue));
                        xCondition.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.ConditionsComparisionType, Convert.ToString(condition.ComparisionType)));
                    }
                }

                //General Information
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.BlockedUsers, alert.BlockedUsers));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.DateColumnName, alert.DateColumnName));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.PType, alert.PeriodType.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.PPosition, alert.PeriodPosition.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.Repeat, alert.Repeat.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.RInterval, alert.RepeatInterval.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.RType, alert.RepeatType.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.RCount, alert.RepeatCount.ToString()));//
                rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.CombineAlerts, alert.CombineAlerts.ToString())); //
                    XmlNode xSendType = rootNode.AppendChild(xmlDoc.CreateElement(XMLElementNames.SendType));
                    xSendType.Attributes.Append(XMLHelper.AppendAttribute(xmlDoc, XMLElementNames.Type, alert.SendType.ToString()));
                    if (alert.ImmediateDays)
                    {
                        XmlNode xImmediate = xSendType.AppendChild(xmlDoc.CreateElement(XMLElementNames.SendTypeDetails));
                        xImmediate.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessDays, ConvertDaysToString(alert.ImmediateBusinessDays)));//
                        xImmediate.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessHoursStart, alert.BusinessStartHour.ToString()));//
                        xImmediate.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessHoursFinish, alert.BusinessendtHour.ToString()));//
                        xImmediate.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendAsSingleMessage, alert.SendAsSingleMessage.ToString()));
                    }
                    else if (alert.SendType==SendType.Daily)
                    {
                        XmlNode xBusinessdays = xSendType.AppendChild(xmlDoc.CreateElement(XMLElementNames.SendTypeDetails));
                        xBusinessdays.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.DailyBusinessDays, ConvertDaysToString(alert.DailyBusinessDays)));
                        xBusinessdays.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendHour, alert.SendHour.ToString()));
                        xBusinessdays.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendAsSingleMessage, alert.SendAsSingleMessage.ToString()));
                    }
                    else if (alert.SendType == SendType.Weekly)
                    {
                        XmlNode xWeekely = xSendType.AppendChild(xmlDoc.CreateElement(XMLElementNames.SendTypeDetails));
                        xWeekely.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendDay, alert.SendDay.ToString()));//
                        xWeekely.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendHour, alert.SendHour.ToString()));
                        xWeekely.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendAsSingleMessage, alert.SendAsSingleMessage.ToString()));
                    }

                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateAlways, alert.ImmidiateAlways.ToString()));
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateDays, alert.ImmediateDays.ToString()));
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessDays, ConvertDaysToString(alert.ImmediateBusinessDays)));//
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessHoursStart, alert.BusinessStartHour.ToString()));//
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.ImmediateBusinessHoursFinish, alert.BusinessendtHour.ToString()));//
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.DailyBusinessDays, ConvertDaysToString(alert.DailyBusinessDays)));//
                    rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SummaryMode, alert.SummaryMode.ToString())); //
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendDay, alert.SendDay.ToString()));//
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendHour, alert.SendHour.ToString()));
                //rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.SendAsSingleMessage, alert.SendAsSingleMessage.ToString()));
            
                //if (alert.PeriodQty > 0)
                {
                    rootNode.AppendChild(XMLHelper.CreateNode(xmlDoc, XMLElementNames.PQty, alert.PeriodQty.ToString())); //
                }
         
            }
            catch { }
            return xmlDoc.InnerXml;
        }
Beispiel #10
0
        /// <summary>
        /// This method take alert object and create item in alert listing list
        /// if Alert succesfully added to Alert list it will return true
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        /// 
        internal static int AddAlert(SPWeb rootweb, Alert alert)
        {
            ///Basic information we are saving for Alert in Alert listing List
            //Title  Single line of text  
            //WebID  Single line of text  
            //ListID  Single line of text  
            //ItemID  Single line of text  
            //WhenToSend  Choice  
            //DetailInfo  Multiple lines of text  
            //Owner  Person or Group  
            //EventType  Choice 

            SPList settingslist = rootweb.Lists.TryGetList(ListAndFieldNames.settingsListName);
            int alertID = 0;
            if (settingslist != null)
            {
                SPListItem listItem = null;

                if (alert.Id != "0")
                {
                    listItem = settingslist.GetItemById(Convert.ToInt32(alert.Id));
                    
                }
                if(listItem ==null)
                {
                    listItem = settingslist.AddItem();
                }
                
                listItem["Title"] = alert.Title;
                listItem[ListAndFieldNames.settingsListWebIdFieldName] = alert.WebId;
                listItem[ListAndFieldNames.settingsListListIdFieldName] = alert.ListId;
                listItem[ListAndFieldNames.settingsListItemIdFieldName] = alert.ItemID;
                
                //Event Type Registered  
                string eventType = string.Empty;
                foreach(AlertEventType aType in   alert.AlertType )
                {
                    eventType += aType + ";#";
                }
                listItem[ListAndFieldNames.settingsListEventTypeFieldName] = eventType;

                //Send type
                listItem[ListAndFieldNames.settingsListWhenToSendFieldName] = alert.SendType;

               //Alert owner
                listItem[ListAndFieldNames.settingsListOwner] = alert.Owner;


                //Other information in xml format
                listItem[ListAndFieldNames.settingsListDetailInfoFieldName] = SerializeAlertMetaData(alert);

                listItem.Update();

                alertID = listItem.ID;

            }
            return alertID;
        }
 private void CreateDelayedAlert(Alert alert, AlertEventType eventType, SPItemEventProperties properties, AlertManager alertManager)
 {
     //, SPWeb web
     try
     {
         if (!alert.SendAsSingleMessage)
         {
             Notifications notificationSender = new Notifications();
             //Need to get the Alert instances
             MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(eventType);
             //string subject = mtObject.Template.Subject;
             //string body = mtObject.Template.Body + "<br>" + "<br>" + FinalBody;
             string subject = notificationSender.ReplacePlaceHolders(mtObject.Template.Subject, properties.ListItem);
             string body = notificationSender.ReplacePlaceHolders(mtObject.Template.Body, properties.ListItem) + "<br>" + "<br>" + FinalBody;
             string parentItemId = Convert.ToString(properties.ListItem.ID);
             DelayedAlert dAlert = new DelayedAlert(subject, body, alert.Id, parentItemId, eventType);
             alertManager.AddDelayedAlert(dAlert);
         }
         else
         {
             Notifications notificationSender = new Notifications();
             MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(eventType);
             string subject = properties.ListTitle;
             string body = notificationSender.ReplacePlaceHolders(mtObject.Template.Subject, properties.ListItem) + "<br>" + "<br>" +notificationSender.ReplacePlaceHolders(mtObject.Template.Body,properties.ListItem) + "<br>" + "<br>" + FinalBody;
             string parentItemId = Convert.ToString(properties.ListItem.ID);
             DelayedAlert dAlert = new DelayedAlert(subject, body, alert.Id, parentItemId, eventType);
             alertManager.AddDelayedAlert(dAlert);
         }
     }
     catch { }
 }
Beispiel #12
0
        internal bool SendMail(Alert alert, AlertEventType eventType, SPListItem item)
        {
            //bool succes = true;
            //try
            //{
            //    MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(eventType);

            //    string toAddress = GetRecipientEmailAddresses(alert.ToAddress, item);
            //    string ccAddress = GetRecipientEmailAddresses(alert.CcAddress, item);
            //    string fromAddress = GetRecipientEmailAddresses(alert.FromAdderss, item);

            //    string subject = ReplacePlaceHolders(mtObject.Template.Subject, item);
            //    string body = ReplacePlaceHolders(mtObject.Template.Body, item);

            //    string smtpSName = GetSMTPServer(item);

            //    SendMail(smtpSName,
            //             toAddress,
            //             fromAddress,
            //             ccAddress,
            //             subject,
            //             body,
            //             null);
            //}
            //catch { succes = false; }

            //return succes;
            return SendMail(alert, eventType, item, string.Empty);
        }
Beispiel #13
0
        internal bool SendMail(Alert alert, AlertEventType eventType, SPListItem item, string strAfterProperties)
        {
            bool succes = true;
            string body = string.Empty;
            try
            {
                MailTemplateUsageObject mtObject = alert.GetMailTemplateUsageObjectForEventType(eventType);
                List<Attachment> attachmentsToSend = null;

                if (mtObject.Template.InsertAttachments)
                {
                    if (item.Attachments != null && item.Attachments.Count > 0)
                    {
                        if (attachmentsToSend == null)
                        {
                            attachmentsToSend = new List<Attachment>();
                        }

                        foreach (string fileName in item.Attachments)
                        {
                            SPFile file = item.ParentList.ParentWeb.GetFile(item.Attachments.UrlPrefix + fileName);
                            System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(file.OpenBinaryStream(), fileName, string.Empty);
                            attachmentsToSend.Add(attachment);
                        }
                    }
                }
                string toAddress = GetRecipientEmailAddresses(alert.ToAddress, item);
                string ccAddress = GetRecipientEmailAddresses(alert.CcAddress, item);
                string fromAddress = GetRecipientEmailAddresses(alert.FromAdderss, item);
                string subject = ReplacePlaceHolders(mtObject.Template.Subject, item);
                if (mtObject.Template.InsertUpdatedFields)
                {
                     body = ReplacePlaceHolders(mtObject.Template.Body, item) + "<br>" + "<br>" + strAfterProperties;
                }
                else
                {
                     body = ReplacePlaceHolders(mtObject.Template.Body, item);
                }

                string smtpSName = GetSMTPServer(item);
                SendMail(smtpSName,
                         toAddress,
                         fromAddress,
                         ccAddress,
                         subject,
                         body,
                         attachmentsToSend);
            }
            catch { succes = false; }
            return succes;
        }