using Microsoft.SharePoint; using SPSolutions.Net.Mail; using SPSolutions.SharePoint.Resources; using System; using System.Collections.Specialized; using System.Configuration; namespace SPSolutions.SharePoint.Net.Mail { public class SPListMailDefinitionProvider : MailDefinitionProvider { private string m_listName; private string m_title; private string ListName { get { return this.m_listName; } } private string Title { get { return this.m_title; } } public override void Initialize(string name, NameValueCollection config) { if (config == null) { throw new ArgumentNullException("config"); } base.Initialize(name, config); this.m_listName = config["ListName"]; if (string.IsNullOrEmpty(this.m_listName)) { throw new ConfigurationErrorsException(ErrorsRes.ConfigurationErrorsException_NoListName); } config.Remove("ListName"); this.m_title = config["Title"]; config.Remove("Title"); } public override MailDefinition RetrieveMailDefinition(string containerName) { return this.RetrieveMailDefinition(SPContext.Current.Web, containerName); } public MailDefinition RetrieveMailDefinition(SPWeb web, string containerName) { SPList sPList = web.Lists[this.ListName]; SPQueryBuilder sPQueryBuilder = new SPQueryBuilder(); sPQueryBuilder.Conditions.Add(new SPQueryCondition(SPQueryConditionTypes.EqualTo, "MailBodyContainerName", "Text", containerName)); SPQuery sPQuery = new SPQuery(); sPQuery.Query=(sPQueryBuilder.QueryXml); SPListItemCollection items = sPList.GetItems(sPQuery); if (items == null || items.Count == 0) { throw new SPException(string.Format("Mail Definition '{0}' could not be found.", containerName)); } object obj = items[0]["MailSubject"]; object obj2 = items[0]["MailBody"]; if (obj == null || obj2 == null) { throw new SPException("Mail objects are null"); } return new MailDefinition { Subject = (string)obj, Body = (string)obj2 }; } } }