2

我有一个在我公司域内的 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)
        {

        }
    }
}
4

1 回答 1

1

在您的代码到达 sendmail 方法之前,您的代码中可能会出现异常,因此您的 sendmail 方法永远不会被调用,如果您有日志,您应该检查那里发生了什么。

此外,它可能适用于您的 login.aspx,因为您没有收到异常并且您的代码完成执行。

于 2010-06-08T15:16:31.537 回答