gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:23 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com