我有一個Web應用程序在公司的域中的IIS上運行,並且正在通過Intranet訪問。我有這個應用程序基於一些用戶操作發送電子郵件。例如,它的一個調度應用程序的一部分,所以如果一個任務完成,發送一封電子郵件通知其他用戶。爲什麼System.Net.Mail在我的c#.net網絡應用程序的一部分中工作,但不在另一部分中工作?
問題是,電子郵件在某些情況下完美無缺,在其他情況下完全沒有。我有一個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)
{
}
}
}
當你發送信息時,你收到了什麼錯誤?如果郵件發送時沒有錯誤但未收到,則可能是基於郵件內容的垃圾郵件過濾。 – 2010-06-08 15:15:21
請發送發送電子郵件的代碼。沒有這些,任何人都很難幫助你。 – Raja 2010-06-08 15:15:52
我瞭解它的困難,沒有代碼。我的問題是知道要包含哪些代碼。我已經添加了下面的靜態郵件發送方法。 – Marc 2010-06-08 15:42:39