DOBON.NET どぼん!のVB道掲示板(プログラム)過去ログ

メールヘッダの「Content-Transfer-Encoding」を設定する方法

VB.NETで、メール送信プログラムを作成しております。
どぼんさんのホームページに記載してある方法を参考にさせて頂きました。
ほぼ問題ないのですが、一部携帯電話にて文字化けが発生してしまいました。
どうも、メールヘッダ(Content-Transfer-Encoding)
をちゃんと指定しないといけないようですが、指定する方法がよく分かりません。

ご存じでしたら教えて頂けないでしょうか?
>ほぼ問題ないのですが、一部携帯電話にて文字化けが発生してしまいました。
>どうも、メールヘッダ(Content-Transfer-Encoding)
>をちゃんと指定しないといけないようですが、指定する方法がよく分かりません。

「ちゃんと」というのは具体的には、どのようになっているものをどのようにしたいということなのでしょうか?私のサンプルでは

Content-Transfer-Encoding: 7bit

となるようですが、これではちゃんとしていないのでしょうか?
>「ちゃんと」というのは具体的には、どのようになっているものをどのようにしたいということなのでしょうか?私のサンプルでは
>
>Content-Transfer-Encoding: 7bit
>
>となるようですが、これではちゃんとしていないのでしょうか?

本日調べたところ、メール送信プログラムを実行する端末によって、
Content-Transfer-Encoding: quoted-printable
となってしまうようです。
このようになってしまう端末は一台のみであり、他の端末で実行した場合は、7bitになります。
これらの端末のOS(Windows2000)や.NET Frameworkのバージョンは同じであり、原因はよく分かりません。
それぞれの動作環境を詳しく調べる予定ですが、しばらく時間がかかると思いますので、この件については保留とさせて下さい。
どうもありがとうございました。
>本日調べたところ、メール送信プログラムを実行する端末によって、
>Content-Transfer-Encoding: quoted-printable
>となってしまうようです。
>このようになってしまう端末は一台のみであり、他の端末で実行した場合は、7bitになります。
>これらの端末のOS(Windows2000)や.NET Frameworkのバージョンは同じであり、原因はよく分かりません。

HTMLメールで送信していませんか?そうでなければテキストをバイナリデータ(添付ファイル)として送っているのかもしれません。どちらでもなければバグでしょうか。
>HTMLメールで送信していませんか?そうでなければテキストをバイナリデータ(添付ファイル)として送っているのかもしれません。どちらでもなければバグでしょうか。

Content-Typeは、text/plainになっています。
添付ファイルになっているということもなさそうです。
問題の発生している(メールを送信している)サーバには、IISやSQLSERVER等のアプリケーションが稼働していて、もしかしたらその影響もあるかと思います。
数少ないインシデントを使ってMicrosoftに問い合わせてみます。
また、分かりましたらご報告します。
>>HTMLメールで送信していませんか?そうでなければテキストをバイナリデータ(添付ファイル)として送っているのかもしれません。どちらでもなければバグでしょうか。
>
>Content-Typeは、text/plainになっています。
>添付ファイルになっているということもなさそうです。

いろいろやってみたのですが、私の場合、ことごとくうまく(正常に)行ってしまいます。ただ唯一同じようなメール(Content-Transfer-Encoding: quoted-printable,Content-Type: text/plain)が送れたのは

objMessage.Headers("Content-Transfer-Encoding") = "quoted-printable"

と無理矢理したときだけです。このとき本文もエンコードされました。なかさんの場合、本文もquoted-printableでエンコードされていたのでしょうか?これに習うと

objMessage.Headers("Content-Transfer-Encoding") = "7bit"

とすると正常に送れそうな気もしますが、根本的な解決にはなっていません。

>問題の発生している(メールを送信している)サーバには、IISやSQLSERVER等のアプリケーションが稼働していて、もしかしたらその影響もあるかと思います。

私はやはりメールの送り方(またはメールの本文)に原因があるのかなと思いますが、なかさんがどのようなコードをお書きになったのかという根本からして不明なのでなんともいえません。

解決されましたらぜひ教えてくださいね。
こんにちは、なかです。

某M社への問い合わせが終わりました。遅くなりすみません。
ユーザ登録に非常に時間がかかってしまいました。

quoted-printableで送信される原因ですが、本文が次のような場合のようです。

・1行の文字が75バイト以上のもの
・半角文字と全角文字を何回か繰り返しているもの 
 例: ア ア ア ア ア ア ア ア ア ア ア

vb.netのメール送信で使用しているのは、CDOSYS.DLLで、上記の場合に自動的に判別してquoted-printableをセットする仕様であるとのことでした。
「マイクロソフトの技術情報(旧バージョンのCDONTSについてですが、実装は同じ)
http://support.microsoft.com/default.aspx?scid=kb;ja;JP412833


但し、機種によってなる場合とならない場合があるとのことです。
こちらでは、DELLのサーバは問題がなかったのですが、NECのサーバでは現象が発生しました。

>objMessage.Headers("Content-Transfer-Encoding") = "7bit"
>
>とすると正常に送れそうな気もしますが、根本的な解決にはなっていません。

こちらの方法でうまく送信できるようになりました!!

いろいろ調べて頂いて、本当にありがとうございました。<(_ _)>
ご報告いただき、ありがとうございました。私もすごく気になっていたので、とてもうれしく、すっきりしました。

それにしてもこのような仕様になっていたとは全く知らず、びっくりしました。なぜこんなに大事なことをはっきりヘルプに書いておかないのかと怒りさえ感じます。

最近私のサイト「DOBON.NET」は「INETA Japan」(http://www.ineta.jp)に加盟したのですが、これからはここのメーリングリストでこのような問題を質問できるかもしれません。もしまた何かありましたら、ご連絡ください。

DOBON.NET | プログラミング道 | プログラミング掲示板