为什么System.Net.Mail可以在我的c#Net web应用程序的一部分工作,而不能在另一部分工作?

为什么System.Net.Mail可以在我的c#Net web应用程序的一部分工作,而不能在另一部分工作?,c#,asp.net,web-applications,smtp,system.net.mail,C#,Asp.net,Web Applications,Smtp,System.net.mail,我有一个web应用程序,它在我公司域内的IIS上运行,并通过intranet进行访问。我让这个应用程序根据一些用户操作发送电子邮件。例如,它在某种程度上是一个调度应用程序,因此如果任务完成,将发送一封电子邮件通知其他用户 问题是,电子邮件在某些情况下可以完美地工作,而在其他情况下则根本不能。我有一个login.aspx页面,在加载页面时发送报告电子邮件(每天通过windows任务调度器加载一次)-这似乎总是工作得很好。我有一个更新页面,当输入文本并单击“更新”按钮时,该页面应该发送电子邮件-此操

我有一个web应用程序,它在我公司域内的IIS上运行,并通过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)
        {

        }
    }
}

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


此外,它可能在您的login.aspx上工作,因为您没有收到异常,并且代码执行完毕。

发送消息时会出现什么错误?如果发送的邮件没有错误,但没有收到,则可能只是根据邮件内容过滤垃圾邮件。请发布发送电子邮件的代码。没有这些,任何人都很难帮助你。我理解没有代码是很难的。我的问题是知道要包含哪些代码。我在下面添加了静态邮寄方法。我不确定我是否理解你的观点。它之所以有效是因为它有效?