我有一个在我公司域内的 IIS 上运行的 Web 应用程序,并且正在通过 Intranet 访问。我有这个应用程序根据一些用户操作发送电子邮件。例如,它部分是调度应用程序,因此如果任务完成,则会发送一封电子邮件通知其他用户。
问题是,电子邮件在某些情况下可以完美运行,而在其他情况下则完全没有。我有一个 login.aspx 页面,它在页面加载时发送报告电子邮件(它每天通过 Windows 任务计划程序加载一次)——这似乎总是很完美。我有一个更新页面,它应该在输入文本并单击“更新”按钮时发送电子邮件 - 此操作大部分时间都会失败。这两个任务都使用我编写的使用 System.Net.Mail 发送电子邮件的相同静态重载方法。
我尝试使用 gmail 作为我的 smtp 服务器(而不是我们的内部服务器),并得到相同的结果。
我调查了运行本地 SMTP 服务是否有任何区别,但似乎没有。此外,由于 C# 是服务器端代码,不应该只关心服务器上运行的内容,而不是客户端吗?
请帮我找出问题所在!我应该去哪里看?我可以尝试什么?
下面是我发送电子邮件的代码。
public static void sendEmail(String[] recipients, String sender, String subject, String body, String[] attachments)
{
MailMessage message;
try
{
message = new MailMessage(sender, recipients[0]);
}
catch (Exception)
{
return;
}
foreach (String s in recipients)
{
if (!message.To.Contains(new MailAddress(s)))
message.To.Add(s);
}
message.From = new MailAddress(sender);
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("PRIVATE.PRIVATE.PRIVATE", 25);
smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.UseDefaultCredentials = true;
if (attachments.Count() > 0)
{
foreach (String a in attachments)
{
message.Attachments.Add(new Attachment(a));
}
}
try
{
smtp.Send(message);
}
catch (Exception e)
{
}
}
}