メールアドレスにダブルクォーテーション?

弊社が開発したモバイル向けサービスの登録者の方で、emailアドレスの中にダブルクォーテーションが含まれているユーザーがいるのを発見した。

これは、一部のMTAまたはMUAの仕様のようで、以下のいづれかに該当するメールアドレスは、@以前の部分がダブルクォーテーションで囲まれるらしい。

  • @以前の部分に連続したドットがある
  • @直前にドットがある

というわけで、ちょっとはまった。

携帯サイトのmailtoでのurlエンコード

携帯サイトでmailtoクリック時に本文や件名も自動的に挿入したい場合、以下のようなリンクを使用する。

<a href="mailto:?subject=SUBJECT&body=BODY"></a>

ただし、SUBJECTとBODYの部分に日本語を使用する場合は、キャリア毎に文字コードに関する仕様が違うようなのでメモ。
phpの内部エンコーディングはUTF-8、出力エンコーディングもUTF-8。

Softbank

UTF-8のままurlencode()をしようすればOK

docomo & au

return urlencode( mb_convert_encoding($str, 'SJIS', 'UTF-8') );

のようにSJISに変換してからURLエンコードする。