我正在通过我的MVC应用程序生成电子邮件,但是我在开发环境和测试/生产环境之间收到了不同的结果。我尝试使用AutodiscoverUrl()
和SmtpClient()
进行实施。我们使用本地计算机上的IIS服务器进行开发,并在服务器上进行测试/生产。
使用SmtpClient
。
正在开发中
发送到我们域内地址的电子邮件正在按预期工作,接收投放通知
发送到@ gmail.com和@ outlook.com等电子邮件发送的邮件是正确的,但@gmail直接进入垃圾邮件文件夹,@ outlokk进入收件箱,有时收到通知或交付完成
AutodiscoverUrl()
我使用的代码是 -
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();
答案 0 :(得分:1)
Exchange方法取决于当前登录的用户。在您的工作站上,这总是你。在“真正的”IIS服务器上,它将是该站点配置为执行的任何服务帐户。您收到时,您无法完全控制“发件人”地址中显示的内容,这就是出现“代表”内容的原因。
我认为如果您从 Exchange发送到Exchange ,在同一个域上,则邮件不会离开您的Intranet,因此不会被认为是垃圾邮件。但对于通过SMTP的内容,它会通过Gmail或Outlook上的垃圾邮件过滤器。您无法在这些系统上配置垃圾邮件过滤器。显然,你发送的任何电子邮件都会使过滤器绊倒。修改电子邮件。您可以查看this等文章,以便改进内容,但要认识到最终您无法控制。