FluentEmail发送邮件时引用部分模板失效,求正确使用方法
在.NET 6中使用FluentEmail正确引用部分模板的方法
规范模板命名与路径
部分模板建议用_XXXPartial.cshtml命名(避免和布局文件命名混淆),若和主模板在同一目录,直接写<partial name="_NeedHelpPartial" />;若放在子目录(比如Partials文件夹),需写完整相对路径:<partial name="Partials/_NeedHelpPartial" />切换到Razor渲染器
FluentEmail默认的文件模板解析器不支持Razor的partial语法,必须使用FluentEmail.Razor包:- 安装NuGet包:
Install-Package FluentEmail.Razor - 在Program.cs中注册服务:
builder.Services.AddFluentEmail("your-sender@example.com") .AddRazorRenderer() .AddSmtpSender("smtp.example.com", 587); // 根据实际邮件发送方式替换
- 安装NuGet包:
使用正确的模板渲染方法
替换原有的UsingTemplateFromFile为Razor专属的UsingRazorTemplateFromFile,确保所有Razor语法(包括partial)被解析:var email = await Email .From("sender@example.com") .To("user@example.com") .Subject("重置密码") .UsingRazorTemplateFromFile(@"Templates/ForgotPassword.cshtml", forgotPasswordModel) .SendAsync();检查部分视图的模型传递(如需)
如果部分视图依赖模型数据,引用时要明确传递:<partial name="_NeedHelpPartial" model="@Model.HelpContactInfo" />同时确保部分视图的
@model声明和传递的模型类型匹配。
内容的提问来源于stack exchange,提问作者edward
相关产品推荐
相关产品推荐

