2012-12-26 44 views
1

有沒有人有正確的電子郵件發送類的asp.net 4.0 c#?正確的電子郵件發送類asp.net 4.0 IIS 7.5 SMTP

目前我有類似下面

你會作出這個下面類有什麼建議?

public static string sendEmail(string srEmailAddress, string srFrom, string srSubject, string srBodyHTML, string srBodyText) 
{ 
    using (MailMessage Email = new MailMessage(new MailAddress("[email protected]", srFrom), new MailAddress(srEmailAddress))) 
    { 
     Email.IsBodyHtml = true; 
     Email.SubjectEncoding = Encoding.UTF8; 
     Email.BodyEncoding = Encoding.UTF8; 
     Email.Subject = srSubject; 

     using (AlternateView textPart = AlternateView.CreateAlternateViewFromString(srBodyText, Encoding.UTF8, "text/plain")) 
     { 
      textPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable; 
      Email.AlternateViews.Add(textPart); 
     } 

     using (AlternateView htmlPart = AlternateView.CreateAlternateViewFromString(srBodyHTML, Encoding.UTF8, "text/html")) 
     { 
      htmlPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable; 
      Email.AlternateViews.Add(htmlPart); 
     } 

     try 
     { 
      using (SmtpClient smtpClient = new SmtpClient()) 
      { 
       smtpClient.Host = "127.0.0.1"; 
       smtpClient.Port = 25; 
       smtpClient.Send(Email); 
       return "True"; 
      } 
     } 
     catch (Exception E) 
     { 
      return E.Message.ToString(); 
     } 
    } 
} 

C#4.0 asp.net 4.0 IIS 7.5

+0

@DJKRAZE它是整個問題。我在問這個課程是否夠好或可以改進?是的,是否有人會解決這個問題 – MonsterMMORPG

回答

3

SmtpClient是正確的。僅供參考,您可以在構造函數中指定HostPort,但除此之外沒有問題。

using (SmtpClient smtpClient = new SmtpClient("127.0.0.1", 25)) 
{ 
    smtpClient.Send(Email); 
    return true; 
} 

我雖然會改變返回類型...要麼返回的truefalse一個bool,或使返回類型void,趕上調用代碼除外。

編輯:要回答你的問題有關捕獲異常...而不是抓住你的sendEmail方法內部的Exception(這應該是SendEmail遵循C#命名標準,方式),你應該抓住從異常你可以撥打sendEmail

try 
{ 
    sendEmail(/*whatever parameters you need */); 
} 
catch(Exception e) 
{ 
    //Do whatever you need to do with the exception... Display a notification 
    // to the user, etc 
} 

此外,你應該儘量不要捕獲所有異常 - 只有你期待的 - 在這種情況下,最有可能的SmtpException

+0

非常感謝您的回答。但我不明白調用代碼中的部分catch異常?你認爲 – MonsterMMORPG

+0

是什麼意思,所以SmtpException可能發生在你認爲的這個類的哪一部分? – MonsterMMORPG

+0

如果與服務器的連接失敗,認證失敗等,則SmtpClient可以拋出SmtpException。查看[MSDN上的此鏈接](http://msdn.microsoft.com/zh-cn/library/swas0fwc.aspx )它顯示了該方法拋出的異常。 –