C# 尝试使用episerver mail以编程方式发送邮件,但失败
我正在尝试使用episerver mail发送一组电子邮件。我写了以下内容作为概念证明C# 尝试使用episerver mail以编程方式发送邮件,但失败,c#,episerver,episerver-7,C#,Episerver,Episerver 7,我正在尝试使用episerver mail发送一组电子邮件。我写了以下内容作为概念证明 ISite site = (Site)SiteHandler.Instance.CurrentSite; ICategory category = site.Categories[0]; //.. hack I know Message message = new Message(subject: "Test 1",
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
为空
我已经尝试将其作为计划任务的一部分(最终需要的地方)并在页面上下文中尝试。在这两种情况下都为null
有人知道我是如何得到这份参考资料的吗?文档对此并不清楚。我担心这是不可能的
我使用的是EpiServer7
非常感谢
编辑
深入挖掘SDK-代码
EPiServerMailSection.Instance.CurrentSite.SiteId
将返回正确的站点id。因此计划程序知道站点,只是无法拾取站点对象
还有代码
SiteHandler.Instance.GetSiteList().Count()
返回一个0的计数,因此它显然没有加载一个站点集合。这似乎是它的关键问题。好的-我终于解决了这个问题
ISite site = (ISite)SiteHandler.Instance.CurrentSite;
ICategory category = EPiServerMailModule.Instance.GetSiteCategory(site);
好的,我终于解决了这个问题
ISite site = (ISite)SiteHandler.Instance.CurrentSite;
ICategory category = EPiServerMailModule.Instance.GetSiteCategory(site);
你的意思是
SiteHandler.Instance
为空还是SiteHandler.Instance.CurrentSite
?我认为第一个不能为空,因为它是在静态构造函数中创建的。当然,除非你手动设置它-是吗?对不起-更正我的(已删除)comment.Instance不是空的-它只是CurrentSite.Less MysticlousePiMail内部使用spEPiServerMailSiteGetSiteList
来获取站点列表。您可以在数据库中查看它以了解它,同时它返回空列表您的意思是SiteHandler.Instance
为空还是SiteHandler.Instance.CurrentSite
?第一个think不能为null,因为它是在静态构造函数中创建的。当然,除非您手动设置它-是吗?对不起-更正我的(已删除)comment.Instance不是空的-它只是CurrentSite。Less MysticsePiMail在内部使用spEPiServerMailSiteGetSiteList
获取站点列表。您可以在数据库中查看它以了解它,同时它返回空列表