C# 使用 SendGrid 配置 Reply-To 解决单发件人验证限制问题
解决方案
核心原理
SendGrid仅要求From字段的发件人邮箱完成单发件人验证,Reply-To字段属于邮件标准回复配置,无需进行Sender Verification,你之前触发报错大概率是误将用户邮箱填写到了From字段,而非Reply-To字段。
你只要保持From字段为你已验证的官方邮箱,单独给邮件添加Reply-To指向用户提交的邮箱即可实现点击回复直接回复给表单提交用户的需求。
代码修改方案
你只需在原有代码生成msg对象后,新增一行设置回复地址的逻辑即可,修改后完整代码如下:
string key = _iConfig.GetSection("Email").GetSection("SendGridKey").Value; var client = new SendGridClient(key); var subject = "Form submission"; // From字段保持为你已在SendGrid验证的邮箱,不可改为用户邮箱 var fromemail = _iConfig.GetSection("Email").GetSection("From").Value; var from = new EmailAddress(fromemail, "站点联系表单"); var toemail = _iConfig.GetSection("Email").GetSection("To").Value; var to = new EmailAddress(toemail, "Admin"); var htmlContent = "<strong>From: " + model.Name + "<br>Email: " + model.Email + "<br>Message: " + model.Message; var msg = MailHelper.CreateSingleEmail(from, to, subject, model.Message, htmlContent); // 新增:设置回复地址为用户提交的邮箱,该字段无需SendGrid验证 msg.SetReplyTo(new EmailAddress(model.Email, model.Name)); var response = await client.SendEmailAsync(msg); return response.IsSuccessStatusCode;
验证说明
修改后发送的邮件,发件人仍然是你已验证的合规邮箱,不会触发SendGrid的发送拦截,所有邮件客户端点击回复按钮时,会自动将收件人填充为你设置的Reply-To地址,也就是提交表单的用户邮箱,完全符合使用需求。
内容的提问来源于stack exchange,提问作者user6383418
相关产品推荐
相关产品推荐

