2

ステップ バイ ステップ ガイド: https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

.net メール ライブラリ (System.Net.Mail) が使用されていることが記載されています。

医療取引では、国の地域に基づいてサーバーを変更し、メール メッセージがステータスと共に送信されたかどうかを記録する必要があります。

.net メール lib はこれを行いますが、MVC Mailer を使用する場合、次のコードをどこに配置すればよいかわかりません。

.net メール ライブラリ -->

SmtpClient client = new SmtpClient(server, port);
client.credentials = CredentialCache.DefaultNetworkCredentials;

MVC メーラー -->

public ActionResult SendWelcomeMessage()
{
    UserMailer.SmtpClient(server, port);
    UserMailer.credentials = CredentialCache.DefaultNetworkCredentials;
    UserMailer.Welcome().SendAsync();


    return RedirectToAction("Index");
}

    static bool mailSent = false;
    private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
    {
        // Get the unique identifier for this asynchronous operation.
         String token = (string) e.UserState;

        if (e.Cancelled)
        {
             Console.WriteLine("[{0}] Send canceled.", token);
        }
        if (e.Error != null)
        {
             Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
        } else
        {
            Console.WriteLine("Message sent.");
        }
        mailSent = true;
    }

MailSent が false の場合、クリティカル ログ エラーに書き込みます。

.net 設定のクライアント設定がどこにあるのかわかりません。上記で行ったようにコントローラーに入れるか、メーラーメソッドに入れるか。

アドバイスをありがとう。

よろしく、ヴィック

4

1 に答える 1

0

私も同じ必要がありました。

そのために、カスタム メール送信者クラスを作成しました。

 Public Class CustomMailSender
        Inherits System.Net.Mail.SmtpClient
        Implements ISmtpClient       

    Public Sub Init(senderEmail As String, password As String)
        Me.Credentials = New System.Net.NetworkCredential(senderEmail, password)
    End Sub

    Public Overloads Sub SendAsync(mail As MailMessage) Implements ISmtpClient.SendAsync
        MyBase.SendAsync(mail, Nothing)
    End Sub

    Public Overloads Sub SendAsync(mail As MailMessage, userToken As Object) Implements ISmtpClient.SendAsync
        MyBase.SendAsync(mail, userToken)
    End Sub

    Public Overloads Sub Send(mail As MailMessage) Implements ISmtpClient.Send
        MyBase.Send(mail)
    End Sub

    Public Shadows Event SendCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Implements ISmtpClient.SendCompleted

End Class

次に、メールコントローラー内で、そのように使用します

Public Class EmailController
        Inherits MailerBase

    Public Sub New()
        MyBase.New()
        Me.CustomMailSender = New CustomMailSender
    End Sub

    Public Property CustomMailSender As CustomMailSender

    Public Sub Sample()
        Dim mvcMailMessage As MvcMailMessage = Populate(Sub(i)
                                                            i.ViewName = "Sample"
                                                            i.To.Add("some1@somewhere.org")
                                                            i.Subject = "Boo!"
                                                        End Sub)
        mvcMailMessage.Send(Me.CustomMailSender)
    End Sub
End Class

ええ、私はそれがVBであることを知っていますが、私はVBの男です! :>これが役立つことを願っています:)

于 2014-10-20T14:14:04.870 に答える