1

.Net Web サイトで使用するために Python コードを変換しようとしています。このコードは、RFC822 形式で保存されたメッセージを取得し、次を使用してそのメッセージを SMTP サーバーに再度送信します。

mail from: blah blah
rcpt to: blah blah
data
<send the text from the RFC822 file here>
.

したがって、RFC822 ファイルの解析は必要ありません (幸いなことに!)。Python では、これは単純に次のようになります。

smtp = smtplib.SMTP(_SMTPSERVER)
smtp.sendmail(_FROMADDR, recipient, msg)

ファイルが変数msgに読み込まれている場所。C#でこれを行う簡単な方法はありますか?

組み込みの C# SMTP オブジェクトでは、これを行う方法が提供されていないか、少なくとも方法が見つかりませんでした。それらは、アドレス、件名、および本文を別々に提供することによって MailMessage を構築するという原則に基づいているようです。SmtpClientメソッドがSend(string, string, string, string)ありますが、これには別の件名と本文が必要なので、RFC822 形式のメッセージを作成すると思います。

必要に応じて、メールを送信する独自​​のクラスを作成できます。これは非常に単純な要件であるため、それほど時間はかかりません。ただし、標準ライブラリを使用する方法があれば、おそらく私のコードよりもバグが少ないでしょう。

4

3 に答える 3

4

MimeKitを使用してメッセージ ファイルを解析してから、MailKitを使用して SMTP 経由で送信することをお勧めします。MailKit は MimeKit に基づいているため、うまく連携し、MailKit の SmtpClient は System.Net.Mail の実装よりも優れています。

メッセージの解析は次のように簡単です。

var message = MimeMessage.Load (fileName);

メッセージの送信は、次の数行と同じくらい簡単です。

using (var client = new SmtpClient ()) {
    client.Connect ("smtp.gmail.com", 465, true);
    client.Authenticate ("username", "password");
    client.Send (message);
    client.Disconnect (true);
}
于 2014-09-27T00:45:43.577 に答える
1

そうです、組み込みのものはこれに対する解決策を提供しません。

私のアドバイスは、TcpClient と StreamReader / StreamWriter を使用して SMTP サーバーとやり取りするコードを少し書くだけです。50 行を超えるコードは必要ありません。

于 2014-09-25T10:27:54.617 に答える