从与Exchange不在同一域中的服务器发送的C#SMTP为空

时间:2012-06-12 10:08:53

标签: c# asp.net-mvc email smtp exchange-server

我刚刚为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);

2 个答案:

答案 0 :(得分:1)

我的猜测是代码中缺少MailDefinition.BodyFileName的值。

包含邮件正文文本的文件的名称。默认值为空。

在开发或内部发送者BodyFileName中有一些价值。在托管的sevrer文件上丢失,因此电子邮件Body为空。

请参阅此Example for reference

答案 1 :(得分:0)

已修复,原来包含电子邮件正文的.html文件尚未部署到实时服务器,因此电子邮件的正文空白。添加它修复了问题,因此事实证明它毕竟不是安全问题。谢谢你的帮助