- PR -

PHPでメール送信

投稿者投稿内容
ひら
会議室デビュー日: 2003/11/07
投稿数: 4
投稿日時: 2003-12-08 15:00
環境はRedHatLinux9+Apache1.3.29+PHP4.2.4-dev+qmail1.0.3です。

件名本文ともに、mb_convert_encodingでJISに変換してmailコマンドで送信すると
本文中の半角カナは正常なのですが、件名の半角カナが文字化けを起こしてしまいます。
(携帯に送信するので半角カナを使用したいのです)
ためしにJIS変換をせずにmb_send_mailで送ると件名本文ともに半角カナ部分が????となります。(PHPソース自体はSJISで書いてます)

以前apache1.3.28+PHP4.1.2を使っていたのですが、文字化けせずに送れていたので
PHPの設定(仕様?)かと思うのですが、php.iniのmbstring設定(最初は指定なしだった)をいじっても変わらず、どうすればいいのかわかりません。
(一度OSから入れなおしているので、もしかしたらqmailの設定に何かあるのかもしれないのですが、qmailは別の人が設定して私はqmail設定は見たこともない状態なので・・・)

初心者でどのような情報を書けばいいのかもわからず情報足りないかもしれませんが、
ご教授いただければ幸いです。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-12-08 16:53
PHP を --enable-mime-magic オプションとその他のオプション付で configure; make;
make install,

php.ini の mime_magic.magicfile = 行を適切に設定、
ソース中で

$subj = i18n_mime_header_encode(i18n_convert("題名", "SJIS"));

これでどう?
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-09 02:59
ども。がると申します。
引用:

ひらさんの書き込み (2003-12-08 15:00) より:
件名本文ともに、mb_convert_encodingでJISに変換してmailコマンドで送信すると
本文中の半角カナは正常なのですが、件名の半角カナが文字化けを起こしてしまいます。
(携帯に送信するので半角カナを使用したいのです)


んと、ものすごく基本的な話にはなるのですが。
携帯で、という状況はわからなくはないのですが、基本的にSMTPでの送信(ISO-2022jp)
に半角かなをまぜるのは、相当に危険な行為だと思います。
そのあたり、例えば
http://www.mikeneko.ne.jp/~lab/kcode/hankana.html
のサイトにいくつか書いてあるので。

最近、要望として多い話なので、ちと気になって一筆。
ひら
会議室デビュー日: 2003/11/07
投稿数: 4
投稿日時: 2003-12-09 15:44
コブラさん、ありがとうございます。
i18n_mime_header_encodeでできました。
(実際はmb_encode_mimeheaderでしましたが、同じですよね?)

がるがるさんのおっしゃるとおり、JIS半角カナは危険だとは思うのですが
内容を削れないものですから・・・。
(DoCoMoが500byte以上送れるようになれば全角でも大丈夫なのですけど)
なるべく使わない方向でいきたいとは思ってます。

ありがとうございました。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-12-09 18:58
「半角仮名をインターネットで使わない方が良い」
村井純のRFCにもありますが、特にメールサーバーで半角仮名に対する取り扱いがシビアで
MSB が立ったデータを流すと予期せぬ動作を惹き起こすのを懸念しての事でしょう。
メールサーバー自身で文字コードの判別等せんでしょうから。

であるからこそ、MSB が立ってない JIS コードが本文に当てがわれ、その他のメールヘッダ
も MIME エンコードによってシングルバイトに変換して不確定要素を排除してるのでしょう。

半角仮名の使用は、ビジネスという観点を除去したとしても、あった方が良いと思うし、
半角仮名というものが現実に存在してしまってる以上、その現実を無視する事は困難
と思われます。

自分的には、この種の制約はバケツリレー式の uucp 時代の名残りでしかないという認識ですが。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-16 15:21
ども。がるです。
# すみません、チェックしてませんでした ^^;

引用:

コブラさんの書き込み (2003-12-09 18:58) より:
特にメールサーバーで半角仮名に対する取り扱いがシビアで
MSB が立ったデータを流すと予期せぬ動作を惹き起こすのを懸念しての事でしょう。
メールサーバー自身で文字コードの判別等せんでしょうから。


んと、非常に単純な話で。避けるべき理由は
・SMTPで通常使用される日本語の文字コードがほぼ確実にiso-2022jpである
・iso-2022jpには半角カナのコードセットは「存在しない」
この2点によるものです。

例えばSMTPで直接EUCとかShift_jisとかUNICODEとかを扱う場合、半角カナ
であっても何の問題もないと思います。
まぁ、X-WindowでEUCベースのところのフォントには、よく半角カナがない
ものがあるみたいですが :-P

引用:

半角仮名の使用は、ビジネスという観点を除去したとしても、あった方が良いと思うし、
半角仮名というものが現実に存在してしまってる以上、その現実を無視する事は困難
と思われます。
自分的には、この種の制約はバケツリレー式の uucp 時代の名残りでしかないという認識ですが。


現実をベースにモノを動かすと時々えらい目にあいます。
極論から言えば「殺人が起きてるんだから殺人はやってもいいんだ」と
言っているのと同意になってしまいます。
危険な現実であれば、それは修正されたほうがよいと思うのですが
どう思われますか?

ましてや技術者であれば、対象の事象に対するメリットとデメリットを
冷静に分析することが不可欠だと思います。

昔はともかくとして、今はWeb(HTTP)はiso-2022jp以外の文字コードで
バンバン流れてますので、Webサイトで半角カナを使うのはそれはそれで
よいと思ってます(個人的には見づらいのですが、その辺は好みなので)。
ただ、SMTPはいまだに大抵iso-2022jpでエンコードしてますので。
そのあたりを考えると、現状のまま半角かなコードを流し込むのは、
ある程度危険であるという認識が必要だと思います。

この辺を変える場合
・iso-2022jpのコード体系を変えるよう働きかける
・UNICODEのメールクライアントをポピュラーにさせる
あたりが有効かなぁ、と。

…でも、UNICODEのメールクライアントは、真剣に考えてみても
いいネタのような気がしますねぇ。
今でも結構「日本以外の多バイト文字のメール」では苦労しますので :-P
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2003-12-17 01:37
ISO-2022 エンコードによる Subject: ヘッダのマルチバイトを更に MIME
エンコードする事によって、殺人が起こり難くなります。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2003-12-17 11:37
ども。がるです。
引用:

コブラさんの書き込み (2003-12-17 01:37) より:
ISO-2022 エンコードによる Subject: ヘッダのマルチバイトを更に MIME
エンコードする事によって、殺人が起こり難くなります。


そう。起こり「難く」なんですよね。
本文は、基本的にNGですが、Subjectは通常いま採用されている形式だと、
EUCとかShift_jisとかでも問題なく。んでもって、その辺の文字コードが
可能であれば、半角カナは本来問題ないはずなんですね。
# ちなみに、なにをしても「ISO-2022jpで半角かな」は基本的にNGです。
# 本来存在しない文字なので。

ただ、ちと記憶に浅いのですが、いくつかのメーラがエンコードタイプの
チェックをせずに「多分ISO-2022jp」と決め打ちしたりして、表示が
めちゃくちゃになっていた記憶があります。
だから「起きない」ではなくて「起こり難」い、になってしまうんですね。
# この辺も「仕様を無視した」ある種好例。

この辺、いつかMUAのほうがきちんと対応してくれると、ずいぶんと
SMTPの世界が楽になるような気がするのですが…。
だれか作らないですかねぇ?
唯一怖いのは「世界中のSPAMが美しく」送られてくることくらいかな? :-P

スキルアップ/キャリアアップ(JOB@IT)