如何在控制台应用程序中使用Actionmailer.Net.Standalone?

3

在控制台应用程序中使用Actionmailer.Net.Standalone是否可行?我一直收到以下错误信息:

在路径[EmailTemplates]中找不到名为[CRD.html.cshtml]的任何CSHTML或VBHTML视图。确保您在文件名中指定格式(即:CRD.html.cshtml.txt.cshtml或CRD.html.cshtml.html.cshtml)。

代码

    public class Mailer : RazorMailerBase
{
    public override string ViewPath
    {
        get { return "EmailTemplates"; }
    }

    public RazorEmailResult Processed(string f)
    {

        From = group;
        To.Add(user);
        Subject = "CRD Process Server has processed file: " + f;
        return Email("CRD.html.cshtml");
    }
}

输入图像描述

由于控制台应用程序没有标准的RazorViewEngine,所以我需要在哪里实现它?


1
顺便提一下,解决这个问题的方法是右键单击 CRD.html.cshtml,点击属性,然后将“复制到输出目录”更改为“仅在较新时输出”。 - Caleb Jares
此外,使用 NuGet 来 Install-Package ActionMailer.Standalone - Caleb Jares
2个回答

2
有点晚了,但或许还有帮助:

尝试更改

return Email("CRD.html.cshtml");

to

return Email("CRD");

扩展名会自动添加。

你的使用方法是正确的,但是ActionMailer使用了一个我项目中没有的http上下文。不过还是感谢你的回答。 - btm86042
ActionMailer.Standalone是独立于任何HttpContext或依赖于ASP.NET的。对我来说,它在控制台应用程序中运行良好。唯一需要注意的是它依赖于RazorEngine nuget包,该包本身依赖于Microsoft.AspNet.Razor包。但通常不会引起任何问题。 - hydr

-2

有一个开源项目作为通用模板引擎,名为RazorEngine

这是一个基于微软的Razor解析技术构建的模板引擎。 RazorEngine允许您使用Razor语法构建强大的模板。

简单来说;

string template = "Hello @Model.Name! Welcome to Razor!";
string result = Razor.Parse(template, new { Name = "World" });

也可以在 NuGet 上获取;

Install-Package RazorEngine


1
由于此解决方案没有获得任何东西(例如Actionmailer中的智能感知),这与string.Format(...)几乎相同。 - Jaider
3
这完全没有回答这个问题。 - fearofawhackplanet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接