You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sitefinity技术问询:如何在MVC控制器中实现邮件发送?

在Sitefinity CMS的MVC控制器中发送邮件的实现方法

当然可以在Sitefinity CMS的MVC控制器中通过代码发送邮件,无需依赖Email campaigns功能。Sitefinity提供了内置的邮件发送API,以下是具体实现步骤:

1. 配置SMTP设置

首先确保在Sitefinity后台已正确配置SMTP参数:

  • 进入 Administration > Settings > Advanced > System > SMTP settings
  • 填写SMTP服务器地址、端口、认证信息等,保存配置

2. 在MVC控制器中注入邮件服务

Sitefinity支持依赖注入,通过IEmailSender接口实现邮件发送。在控制器构造函数中注入该服务:

using System.Net.Mail;
using Telerik.Sitefinity.Services;
using System.Web.Mvc;

public class CustomEmailController : Controller
{
    private readonly IEmailSender _emailSender;

    // 通过依赖注入获取IEmailSender实例
    public CustomEmailController(IEmailSender emailSender)
    {
        _emailSender = emailSender;
    }
}

3. 实现邮件发送逻辑

在控制器的Action方法中构建邮件内容并调用发送方法:

public ActionResult SendTestEmail()
{
    try
    {
        var mailMessage = new MailMessage
        {
            From = new MailAddress("your-sender-email@example.com"),
            Subject = "Sitefinity MVC控制器发送的测试邮件",
            Body = "这是一封通过Sitefinity内置API发送的测试邮件",
            IsBodyHtml = false // 若需HTML内容设为true
        };

        // 添加收件人
        mailMessage.To.Add("recipient-email@example.com");

        // 发送邮件
        _emailSender.Send(mailMessage);

        return Content("邮件发送成功!");
    }
    catch (Exception ex)
    {
        // 处理发送异常
        return Content($"邮件发送失败:{ex.Message}");
    }
}

4. (可选)使用Sitefinity邮件模板

如果需要复用后台创建的邮件模板,可通过ITemplateService加载模板并替换动态内容:

using Telerik.Sitefinity.Templates;

public ActionResult SendTemplateEmail()
{
    try
    {
        var templateService = SystemManager.GetService<ITemplateService>();
        // 根据模板名称获取模板实例
        var emailTemplate = templateService.GetTemplate("YourTemplateName");

        var dynamicContent = new
        {
            UserName = "张三",
            OrderNumber = "ORD-12345"
        };

        // 替换模板中的占位符(假设模板内容包含{{UserName}}、{{OrderNumber}})
        var emailBody = emailTemplate.Content
            .Replace("{{UserName}}", dynamicContent.UserName)
            .Replace("{{OrderNumber}}", dynamicContent.OrderNumber);

        var mailMessage = new MailMessage
        {
            From = new MailAddress("sender@example.com"),
            To = { "recipient@example.com" },
            Subject = emailTemplate.Subject,
            Body = emailBody,
            IsBodyHtml = true
        };

        _emailSender.Send(mailMessage);

        return Content("模板邮件发送成功!");
    }
    catch (Exception ex)
    {
        return Content($"模板邮件发送失败:{ex.Message}");
    }
}

注意事项

  • 确保SMTP配置正确,可在后台测试发送邮件验证
  • 生产环境中建议添加日志记录,便于排查发送问题
  • 若发送大量邮件,需考虑SMTP服务器的发送限制

内容的提问来源于stack exchange,提问作者Jefferson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:45:10