ASP.NET Core 5.0使用Mailjet发邮件时version未识别及其他发信方法咨询
Mailjet version字段识别失败解决方案
你安装的mailgate包并非Mailjet官方适配.NET的标准依赖包,和你导入的Mailjet.Client命名空间对应的官方包存在类结构冲突,是字段无法识别的核心原因,修复步骤如下:
- 先卸载项目中安装的
mailgate包,仅保留官方NuGet包Mailjet.Client的最新稳定版,避免依赖冲突 - 初始化Mailjet客户端时显式指定API版本,示例代码如下:
using Mailjet.Client; using Mailjet.Client.Resources; using Microsoft.AspNetCore.Identity.UI.Services; using Newtonsoft.Json.Linq; namespace YourNamespace { public class MailjetEmailSender : IEmailSender { public async Task SendEmailAsync(string email, string subject, string htmlMessage) { // 替换为自己的API密钥 var apiKey = "你的Mailjet API Key"; var apiSecret = "你的Mailjet API Secret"; var client = new MailjetClient(apiKey, apiSecret) { // 显式指定API版本,对应你说的version字段 Version = ApiVersion.V3_1 }; var request = new MailjetRequest { Resource = Send.Resource } .Property(Send.Messages, new JArray { new JObject { {"From", new JObject { {"Email", "sender@example.com"}, {"Name", "发送方名称"} }}, {"To", new JArray { new JObject { {"Email", email}, {"Name", "接收方名称"} } }}, {"Subject", subject}, {"HTMLPart", htmlMessage} } }); await client.PostAsync(request); } } }
注:你贴出的代码末尾的
][1]是粘贴残留,实际使用时需要删除,否则会触发编译错误。
ASP.NET Core 5.0 其他电子邮件发送方案
- MailKit + MimeKit:.NET生态最通用的轻量SMTP邮件发送方案,无第三方服务绑定,可对接任意支持SMTP协议的邮箱服务,性能和兼容性都优于.NET原生的
System.Net.Mail库,适合自行对接自有邮箱服务器的场景 - SendGrid:微软官方文档推荐的第三方邮件发送服务,提供了适配ASP.NET Core Identity的
IEmailSender现成实现,不需要大量封装代码即可快速接入 - 国内云服务商邮件推送服务:阿里云邮件推送、腾讯云简单邮件推送等国内服务商都提供了适配.NET 5的SDK,国内发信到达率高于境外的Mailjet、SendGrid服务,适合面向国内用户的业务场景
内容的提问来源于stack exchange,提问作者Mohammed Lubbad
相关产品推荐
相关产品推荐

