Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用episerver mail以编程方式发送邮件,但失败_C#_Episerver_Episerver 7 - Fatal编程技术网

C# 尝试使用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",

我正在尝试使用episerver mail发送一组电子邮件。我写了以下内容作为概念证明

        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的计数,因此它显然没有加载一个站点集合。这似乎是它的关键问题。好的-我终于解决了这个问题

  • 您必须在episerver邮件中至少创建一个节。如果没有此CurrentSite,则为null
  • 一旦你有了网站,就可以从下面的代码中获得分类。然后发送方法停止出错。它是否发送邮件目前是一个悬而未决的问题-我似乎有SMPT服务器/垃圾邮件过滤器类型的问题。哦,好的

    ISite site = (ISite)SiteHandler.Instance.CurrentSite;
    ICategory category = EPiServerMailModule.Instance.GetSiteCategory(site);
    

  • 好的,我终于解决了这个问题

  • 您必须在episerver邮件中至少创建一个节。如果没有此CurrentSite,则为null
  • 一旦你有了网站,就可以从下面的代码中获得分类。然后发送方法停止出错。它是否发送邮件目前是一个悬而未决的问题-我似乎有SMPT服务器/垃圾邮件过滤器类型的问题。哦,好的

    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
    获取站点列表。您可以在数据库中查看它以了解它,同时它返回空列表