1

我正在尝试使用 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一片空白

我已经尝试将此作为计划任务的一部分(最终需要在其中),并在页面的上下文中尝试。在这两种情况下它都是空的。

有没有人知道我是如何得到这个参考的。文档对此很模糊。我担心这是不可能的。

我正在使用表服务器 7

非常感谢

编辑

深入了解 SDK - 代码

EPiServerMailSection.Instance.CurrentSite.SiteId

将返回正确的站点 ID。因此调度程序知道它只是未能拾取站点对象的站点。

还有代码

SiteHandler.Instance.GetSiteList().Count()

返回计数 0,因此它显然没有在沿线某处加载网站集合。这似乎是它的关键问题

4

1 回答 1

1

好的 - 我终于解决了这个问题。

  1. 您必须在 Episerver 邮件中创建至少一个部分。没有这个 CurrentSite 为空
  2. 获得网站后,可以从以下代码中获取类别。然后 send 方法停止出错。它是否发送邮件目前是一个悬而未决的问题 - 我似乎有 SMPT 服务器/垃圾邮件过滤器类型问题。那好吧。

    ISite site = (ISite)SiteHandler.Instance.CurrentSite;
    ICategory category = EPiServerMailModule.Instance.GetSiteCategory(site);
    
于 2013-04-17T10:33:03.583 回答