c# - 为什么 System.Net.Mail 在我的 c#.net web 应用程序的一部分工作,但在另一部分却不行?

标签 c# asp.net web-applications smtp system.net.mail

我有一个 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,因为您没有收到异常并且您的代码已完成执行。

关于c# - 为什么 System.Net.Mail 在我的 c#.net web 应用程序的一部分工作,但在另一部分却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998644/

相关文章:

javascript - 如何使用 PDF.js 显示 PDF(以 Base64 存储)中的所有页面?

java -/WEB-INF/类与/WEB-INF/lib

c# - 'File.Copy' 不会覆盖文件

c# - 在静态方法线程安全的 HttpContext.Current 上使用 foreach 吗?

c# - 同时检查多个 boolean 返回值

ASP.NET - 将 UpdatePanel 触发器添加到 gridview 内的 LinkBut​​ton

python - 如何在GAE模板中获取当前页面的url

django - 使用 Django 进行 Web 开发的虚拟环境的最佳实践?

C# 更新 DLL 而无需重新编译项目

c# - ASCIIEncoding.ASCII.GetBytes() 返回意外值