我刚刚为MVC网站编写了一段代码,通过我们的Exchange服务器使用.NET SmtpClient
发送SMTP电子邮件。它发送的电子邮件有一个HTML正文,其中包含图像链接和网站上托管的文件。
在我们的网络内部运行时,电子邮件会被正常发送,但是当它从托管服务器运行时,不在我们的支配下,电子邮件会通过,但正文是空白的。有人知道为什么吗?是因为链接的图像或文件可能是潜在的威胁,来自不在域上的服务器,因此不受信任?
以下是发送电子邮件的代码,它使用MailDefinition
类将文件的链接插入到他们请求下载的正文中:
MailDefinition md = new MailDefinition();
md.From = "test@testing.com";
md.Subject = "Test Email";
md.IsBodyHtml = true;
ListDictionary replacements = new ListDictionary();
replacements.Add("REQUESTED_LINK", @"C:\MyFile.pdf");
MailMessage email = md.CreateMailMessage(mailTo, replacements, content, new System.Web.UI.Control());
SmtpClient emailClient = new SmtpClient();
emailClient.Host = "MyExchangeServer";
emailClient.Send(email);
答案 0 :(得分:1)
我的猜测是代码中缺少MailDefinition.BodyFileName
的值。
包含邮件正文文本的文件的名称。默认值为空。
在开发或内部发送者BodyFileName
中有一些价值。在托管的sevrer文件上丢失,因此电子邮件Body为空。
答案 1 :(得分:0)
已修复,原来包含电子邮件正文的.html文件尚未部署到实时服务器,因此电子邮件的正文空白。添加它修复了问题,因此事实证明它毕竟不是安全问题。谢谢你的帮助