2

キリル文字を含む件名のメールを送信する必要があります。しかし、メールサーバーやクライアントの問題により、受信者が間違った手紙を受け取ることがあります。私は常にwindows-1251エンコーディングでメールを送信しますが、メールクライアントがレターの件名と送信者を別のエンコーディング(KOI-8R)で表示し、ユーザーがメッセージを理解できない場合があります。RFC 2047標準で説明されているように、エンコードされた単語のタグを使用しようとしました。たとえば、メールの件名フィールドは次のようになります。

Subject: =?WINDOWS-1251?B?wiDt5eTw4PUg8vPt5PD7IOL75PD7IOIg4+Xy8OD1IPL78P/yIOIg4uXk8OAg/+Tw?=
=?WINDOWS-1251?B?4CDq5eTw4C4gwvvw4uDiIPEg4vvk8Psg4iDy8+3k8OUg4+Xy?=
=?WINDOWS-1251?B?8PssIOL78vDzIOL75PDu6SD/5PDgIOrl5PDgLCDi+/Lw8yDj?=
=?WINDOWS-1251?B?5fLw7ukg4vvk8OUg7O7w5PMsIP/k8OAg4iDi5eTw4Cwg4vvk?=
=?WINDOWS-1251?B?8PMg4iDy8+3k8PMu?=

これらの行は、Oracle関数によって生成されましたUTL_ENCODE.MIMEHEADER_ENCODE

すべてのメールクライアント(Lotus Notes、gmail.com)は、そのような電子メールの件名の最初の行のみを表示します(最初の48個の記号のみ)。メールの件名の問題は何ですか?

4

1 に答える 1

5

問題は、RFC 2822によると、正しく折りたたまれないことです。ヘッダーに複数行のフィールドを作成するには、各行を空白で始める必要があります。

あなたがする必要があるのは:

replace(UTL_ENCODE.MIMEHEADER_ENCODE(subject, 'UTF8', UTL_ENCODE.BASE64), UTL_TCP.CRLF, UTL_TCP.CRLF || ' ')

これで問題が解決するはずです。

于 2014-08-12T14:46:29.847 に答える