Я пытаюсь отправить набор сообщений электронной почты, используя почту episerver. Я написал следующее в качестве доказательства концепцииПопытка и отказ от программной отправки почты с использованием почты episerver
ISite site = (Site)SiteHandler.Instance.CurrentSite;
ICategory category = site.Categories[0]; //.. hack I know
Message message = new Message(subject: "Test 1",
bodyText: "Test 1",
bodyHtml: "Test 1",
container: GetRecipientContainer(),
fromAddress: "[email protected]",
fromName: "Email User",
addParametersToRedirectedLinks: false,
category: category,
site: site);
var returnMessage = EPiServerMailHandler.Send(message, true);
Но он продолжает врезаться с
Исключение было брошено на цели вызова. [Объект ссылка не установлена в экземпляр объекта.
В частности, он не может получить ссылку на сайт. SiteHandler.Instance.CurrentSite
is null
Я пробовал это как часть запланированной задачи (где это в конечном счете должно быть) и в контексте страницы, чтобы попробовать. В обоих случаях это не имеет значения.
У кого-нибудь есть представление о том, как я получаю эту ссылку. Документация неясна для этого. Боюсь, это невозможно.
Я использую EPiServer 7
Большое спасибо
EDIT
Копаем дальше в SDK - код
EPiServerMailSection.Instance.CurrentSite.SiteId
будет возвращать правильный идентификатор сайта. Поэтому планировщик знает сайт, на котором он просто не может найти объект сайта.
Также код
SiteHandler.Instance.GetSiteList().Count()
возвращает число 0, так что это явно не загружая коллекцию сайтов где-то вдоль линии. Это, по-видимому, ключевой вопрос с ним
Вы имеете в виду 'SiteHandler.Instance' является нулевым или' SiteHandler.Instance.CurrentSite'? Первый, который, я думаю, не может быть нулевым, поскольку он создается в статическом конструкторе .. если вы его вручную не установили, не так ли? – Lanorkin
Извините - исправление комментария (удалено). Экземпляр не является нулевым - это просто CurrentSite. Менее таинственный –
EPiMail внутренне использует 'spEPiServerMailSiteGetSiteList' для получения списка сайтов. Вы можете просмотреть его через свой db, чтобы понять, пока он возвращает пустой список – Lanorkin