0

System.Net.Mail.SmtpClientリモート SMTP サーバー経由で電子メールを送信するために使用しています。送信されたメッセージのヘッダーを見ると、メッセージが X-Spam から 2.5 ヒットを取得していることがわかります。フィールドの base64 エンコードを防ぐにはどうすればよいですか? また、ヒットFromを取り除くにはどうすればよいですか? NULL_IN_BODYスパムとしてマークされていなくても、完璧にしたい. この問題に関する情報を見つけることができません (それが本当に問題である場合)。

MIME-Version: 1.0
From: Myself <no-reply@myself.com>
To: me@myself.com
Date: 25 Mar 2011 15:20:23 +0100
Subject: Test subject
Content-Type: text/plain; charset=us-ascii
X-Spam-Status: No, hits=0.5 required=5.0
X-Spam-Report: 0.5 hits, 5.0 required;
    * -0.5 ALL_TRUSTED            Passed through trusted hosts only via SMTP
    *  1.0 NULL_IN_BODY           FULL: Message has NUL (ASCII 0) byte in message
X-Virus-Scanned: by moam (http://www.moam.net/)
X-Moam-Version: 0.95
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by mx02.example.com id p2PEKKNs014451

Hello, sshow!
Below is your login information

Username: sshow
Password: a8sJdfl

Sent from http://me.myself.com

編集:FROM_EXCESS_BASE64フィールドのすべてのエンコーディングを削除することで、最も重要な警告を削除することができました。以前は手動でEncoding.UTF8フィールドを設定していました。

文字列からすべての制御文字を削除するbodyと、警告が発生しなくなります。ただし、これにより改行も削除されます。

foreach (char c in body)
{
    stringBuilder.Append(Char.IsControl(c) ? ' ' : c);
}

編集:改行を除くすべての制御文字を削除すると、警告が返されます!

foreach (char c in body)
{
    stringBuilder.Append(Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c);
}
4

1 に答える 1

1

メールの本文やソース コードを見ないと断言できませんが、次のことが当てはまると思います。

  • From ヘッダーを base64 でエンコードしましたが、その必要はありませんでした。SpamAssassin は、これを何かを難読化する試みである可能性が高いと考えています: http://wiki.apache.org/spamassassin/Rules/FROM_EXCESS_BASE64
  • 電子メールの本文にバイナリ データ (具体的には null バイト) があります。これは、たとえば、UTF-16 (UTF-32) でエンコードされたテキストを電子メールの本文にダンプした場合に発生する可能性があります。これは、通常の英語の文字がそれぞれ 2 (4) バイトで表され、そのうちの 1 (3) バイトが null であるためです。

それでも問題が解決しない場合は、完全なコードとメッセージ全体の 16 進ダンプを投稿してください。

アップデート:

Char.IsControl は CR および LF 文字も削除します ('\r' および '\n')。それらを削除しないようにコードを変更してください。

Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c
于 2011-03-25T00:20:53.903 に答える