1

誰かがasp.net4.0c#用の適切な電子メール送信クラスを持っていますか?

現在、私は以下のようなものを持っています

クラスの下でこれをどのように提案しますか?

public static string sendEmail(string srEmailAddress, string srFrom, string srSubject, string srBodyHTML, string srBodyText)
{
    using (MailMessage Email = new MailMessage(new MailAddress("noreply@monstermmorpg.com", 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

4

1 に答える 1

3

SmtpClient正しい。Hostちなみにandはコンストラクタで指定できますがPort、それ以外は問題ありません。

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

ただし、戻り値の型を変更します... または を返すかbooltrue戻り値のfalse型を作成voidして、呼び出し元のコードで例外をキャッチします。

編集:例外のキャッチに関する質問に答えるには...メソッドのException内部をキャッチする代わりに(ちなみに、C#の命名基準に従う必要があります)、呼び出した場所から例外をキャッチする必要があります。sendEmailSendEmailsendEmail

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.

于 2012-12-26T16:10:01.693 に答える