【发布时间】:2023-03-20 07:55:01
【问题描述】:
我正在通过我的 MVC 应用程序生成一封电子邮件,但是我在开发环境和测试/生产环境之间收到了不同的结果。我尝试过使用AutodiscoverUrl() 和SmtpClient() 来实现。我们在我的计算机上使用本地 IIS 服务器进行开发,并在服务器上用于测试/生产。
使用SmtpClient。
-
开发中
发送到我们域内地址的电子邮件正在按预期工作,收到送达通知
发送至@gmail.com 和@outlook.com 等电子邮件是正确的,但@gmail 会直接进入垃圾邮件文件夹,@outlokk 会进入收件箱,有时会收到通知或发送完成
- 在测试/部署中
- 发送到我们域内地址的电子邮件正在按预期工作,没有发送通知
- 发送到@gmail.com 和@outlook.com 等电子邮件是正确的,但它会直接进入垃圾邮件文件夹,没有通知或发送完成
AutodiscoverUrl()
- 正在开发中
- 发送地址在我们域内的电子邮件被列为我的电子邮件,代表我希望它来自的电子邮件,已发送的电子邮件和已读回执在我的邮箱中
- 发送邮件到@gmail.com 发件人正确,发送的邮件在我的已发送文件夹中,没有已读回执
- 发送到@outlook.com 发件人是正确的,发送的电子邮件在我的电子邮件发送文件夹中,已读回执进入我的邮箱,收据中的“收件人”为空白(原始电子邮件发给谁)
- 在测试/部署中
- 发送到具有相同域的电子邮件地址是正确的,但是没有已读回执,并且任何已发送文件夹中都没有项目
- 发送至@gmail.com 的发件人是正确的,但它显示在垃圾邮件文件夹中,并且需要永远显示,没有已读回执,并且已发送文件夹中没有项目
- 发往@outlook.com 的发件人是正确的,但是它被递送到垃圾邮件文件夹,没有已读回执,并且已发送文件夹中没有项目
我使用的代码是--
using (SmtpClient sender = new SmtpClient("mail.state.gov"))
{
using (MailMessage mailmessage = new MailMessage())
{
mailmessage.To.Add(address.Email);
mailmessage.From = (new MailAddress("ApplicationEmail@state.gov"));
mailmessage.Subject = subjectline;
mailmessage.Body = Body(personID);
mailmessage.Priority = MailPriority.Normal;
mailmessage.IsBodyHtml = true;
mailmessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure |
DeliveryNotificationOptions.OnSuccess;
mailmessage.Bcc.Add("ApplicationEmail@state.gov");
sender.Send(mailmessage);
}
}
然后我尝试了
string from = "ApplicationEmail@state.gov";
ExchangeService service = new ExchangeService();
service.AutodiscoverUrl(from);
EmailMessage message = new EmailMessage(service);
message.Subject = subjectline;
message.Body = Body(personID);
message.ToRecipients.Add(address.Email);
message.From = from;
message.IsReadReceiptRequested = true;
message.Save();
message.SendAndSaveCopy();
【问题讨论】:
-
您是否在“发件人”地址中使用的域上配置了 SPF/DKIM DNS 记录?如果没有,垃圾邮件文件夹也就不足为奇了。
-
您将在哪里执行这些配置?
-
在发件人地址所在域的 DNS 区域文件中
-
我相信我找到了解决 gmail 问题的方法。我将以下内容添加到标题
mailmessage.Headers.Add("Message-Id", String.Format("<{0}@{1}>", Guid.NewGuid().ToString(), "ApplicationEmail@state.gov"));但是它似乎不适用于 Outlook 消息。
标签: c# email smtpclient smtp-auth