我正在尝试使用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: "demo@demo.com",
fromName: "Email User",
addParametersToRedirectedLinks: false,
category: category,
site: site);
var returnMessage = EPiServerMailHandler.Send(message, true);
但它一直在崩溃
调用目标抛出了异常。 [宾语 引用未设置为对象的实例。
具体而言,它无法获得对该网站的引用。 SiteHandler.Instance.CurrentSite
为空
我已经尝试过将此作为计划任务的一部分(最终需要),并在页面的上下文中尝试。在这两种情况下它都是空的。
有没有人知道我如何得到这个参考。文档对此不明确。我担心这是不可能的。
我正在使用episerver 7
非常感谢
修改
进一步深入SDK - 代码
EPiServerMailSection.Instance.CurrentSite.SiteId
将返回正确的网站ID。因此,调度程序知道该站点无法获取站点对象。
还有代码
SiteHandler.Instance.GetSiteList().Count()
返回0的计数,因此它显然没有加载沿线某处的网站集合。这似乎是它的关键问题
答案 0 :(得分:1)
好的 - 我终于解决了这个问题。
获得该网站后,可以从以下代码中获取该类别。然后send方法停止错误。它是否发送邮件是一个悬而未决的问题 - 我似乎有SMPT服务器/垃圾邮件过滤器类型问题。哦,好吧。
ISite site = (ISite)SiteHandler.Instance.CurrentSite;
ICategory category = EPiServerMailModule.Instance.GetSiteCategory(site);