メールアドレスが不正です
どうみても原因はこれ
メール 正規表現 - Google 検索
mb_encode_mimeheader
RFC2047あたりで長すぎるのは折り返してねとなっているので、mime情報は独自実装よりmb_encode_mimeheader使うのがベターだと思います。
モバイルだと30Byte制限あるので折り返し必要になることなさそうですが。
<?php mb_internal_encoding('SJIS-win'); $subject = "サブジェクトのテストでござる①"; print mb_encode_mimeheader($subject, 'SJIS-win'); // =?Shift_JIS?B?g1SDdYNXg0aDToNngszDvcSCxYKygrSC6YdA?= print base64_decode('g1SDdYNXg0aDToNngszDvcSCxYKygrSC6YdA'); // サブジェクトのテストでござる① print mb_encode_mimeheader($subject, 'SJIS'); // =?Shift_JIS?B?g1SDdYNXg0aDToNngszDvcSCxYKygrSC6T8?= print base64_decode('g1SDdYNXg0aDToNngszDvcSCxYKygrSC6T8'); // サブジェクトのテストでござる? print mb_encode_mimeheader('とても長いサブジェクトのテストなんですよ', 'UTF-8'); // =?UTF-8?B?44Go44Gm44KC6ZW344GE44K144OW44K444Kn44Kv44OI44Gu44OG44K544OI?= // =?UTF-8?B?44Gq44KT44Gn44GZ44KI?= ?>
動作的には、internal_encodingから第二引数へ変換してbase64エンコードにMIME情報付加な感じ。
SJISやUTF8で送信したい場合はmb_send_mailは窓から投げ捨てましょう。
mb_strwidth
<?php echo mb_strwidth('3'); // 1 echo mb_strwidth('o'); // 1 echo mb_strwidth('エ'); // 2 echo mb_strwidth('㈱'); // 2 echo mb_strwidth('ェ'); // 1 echo mb_strwidth('⑩'); // 1 echo mb_strwidth('ω'); // 1
なんか顔文字みたいでカワユス。
⑩てUnicode一覧みるとU+2469ぽいんだけど1かえってきてるし。
ωは1なのは仕様どおり。
mb_strwidthの使いどころがわからん。
jp2.php.netがクラックされてない?
ethna.jpも
「pp.cool0.biz」でぐぐってみたところ、いろいろなところやられてるっぽいですね
http://namidame.2ch.net/test/read.cgi/news/1212288872/918-919
エンコーディングとか
PHPの内部エンコードやら変換にはSJIS-winを使えがやっと浸透してきましたが、eucJP-winは未だに使ってくれません。
MySQLのDBエンコーディングはいくらいってもSJISからCP932に変更してもらえません。
<?php mb_internal_encoding('UTF-8'); $str = "ァィゥェォ①㈱" print mb_convert_encoding($str, 'SJIS'); // ァィゥェォ?? print mb_convert_encoding($str, 'SJIS-win'); // ァィゥェォ①㈱ print mb_convert_encoding($str, 'EUC-JP'); // ァィゥェォ?? print mb_convert_encoding($str, 'eucJP-win'); // ァィゥェォ①㈱ print mb_convert_encoding($str, 'ISO-2022-JP'); // ??????? print mb_convert_encoding($str, 'JIS'); // ァィゥェォ?? print mb_convert_encoding($str, 'ISO-2022-JP-MS'); // ァィゥェォ①㈱
このままだともちろん化けるので、ブラウザで開いて文字エンコーディングでも切り替えて確認してください。