使用SendGrid API通过有权代发的Office365账号发件失败问题
解决办法
你的情况是SendGrid只认已验证的a@tony.gr作为发送主体,但你要让收件人看到的发件人是b@tony.gr,这时候得在代码里区分实际发送账号和显示发件人,具体修改如下:
修改代码,添加Sender字段指定a@tony.gr,关键是要通过SetSender()方法配置实际发送的验证账号:
var from = new EmailAddress("b@tony.gr", "B Account"); // 新增:指定SendGrid已验证的实际发送账号 var sender = new EmailAddress("a@tony.gr", "A Account"); var subject = "Test"; var to = new EmailAddress("foo@foo.com", "Recipient"); var plainTextContent = "Hello world !!"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, null); // 设置实际发送者,这一步是核心 msg.SetSender(sender); var response = await client.SendEmailAsync(msg);
简单说明
From字段:收件人邮箱中显示的发件人信息(就是你需要的b@tony.gr)Sender字段:SendGrid后台用来验证发送权限的账号(必须是已配置好代发权限的a@tony.gr)
这样配置后,SendGrid会用a@tony.gr的权限发送邮件,同时收件人看到的发件人是b@tony.gr,完全符合你的需求。如果还是出现邮件未发出的情况,可以去SendGrid控制台的「邮件活动日志」里查看具体投递状态,排查是否存在收件人拒收、垃圾邮件标记等其他问题。
内容的提问来源于stack exchange,提问作者Antonis Palaios
相关产品推荐
相关产品推荐

