iPad, iPod touch: Gmail同士のメールやり取りがなぜか文字化け

先程のエントリーで紹介したiOSデバイス同士のメールやり取りで発生した文字化けについてです。

先日、知人からメールが届き、そのメールに対して返信したところ文字化けしてしまいました。その文字化けしたメールに対して再度知人が返信して来た内容は読み取る事が出来ました。

その一連のやり取りメールのヘッダ情報を詳しく見てみてたところ、次の様な感じになっていました。

  1. 知人(iPod touch)から自分(iPad)への最初のメールは JIS エンコード (文字化けしていない)
  2. 自分(iPad)から知人(iPod touch)への返信のメールは UTF-8 エンコード (文字化けしている)
  3. 知人(iPod touch)から自分(iPad)への返信のメールも UTF-8 エンコード (返信部分は文字化けしていない)

何れのメールにも全角と半角が含まれていて、どちらもMicrosoft Exchangeサーバーの設定でgmailを送受信する様にセットアップされているデバイス同士です。

Macのメールで受信しても文字化けした個所は変わらず、エンコードを色々切り替えてみましたが読み取る事は出来ませんでした。最初はヘッダーにはUTF-8と記されているにもかかわらず、別のエンコードが施されていると思っていたのですが、JISやSHIFT JIS、さらにはEUCなど一通り試したのですが読み取れませんでした。

ウチのiPadを使って色々なパターンでメールの送受信をしてみているのですが、結局原因不明のまま。どうもiOS 4.3.3のメールアプリでExchange ServerセットアップのGmailを使い、本文中の全角文書の中に半角文字が存在していると発生する様な気がします。

これからも頻繁に発生するようであれば、より詳しく調べてみようと思います。

 

iPhone: softbank.ne.jpメールアドレスからgmailへのメール文字化けが直ってる?

先日、iOS デバイス同士でgmailのメールやり取りをしていたところ突如文字化けが発生して驚かされたのですが、その事で以前「softbank.ne.jp」メールアドレスから「gmail.com」メールアドレスへのメールが文字化けする事を、当ブログで紹介した事を思い出し、もう少し詳しく調べてみました。

その結果、iOS 4.3.3をインストールしたiPhone 4上で、SMS/MMSアプリを使って「softbank.ne.jp」メールアドレスから「gmail.com」メールアドレスへ日本語を含むメールを送っても文字化けが発生しなくなった事を発見しました。

iOSバージョンアップの度に試していた訳ではないので、いつから改善されたのか分からないのですが、今年の2月頃の段階ではまだ文字化けしていたと記憶しているので、iOS 4.3あたりで何か変更が加えられたのでしょうか…。

従来は こちら のエントリーで紹介した通り、

  • x x x @softbank.ne.jp から y y y @gmail.com は文字化けする
  • x x x @softbank.ne.jp から y y y @googlemail.com は文字化けしない

といった状況でした。

2011年5月8日に、前回同様SMS/MMSアプリを使ってそれぞれのメールアドレスに対してメールを送信してみたのですが、どちらも文字化けせずに読み取る事が出来ました。

さらに詳しく調べる為に、それらのメールをMacで受信してヘッダ情報を詳しく調べてみた結果、次の様な事が分かりました。

  • @softbank.ne.jp から @gmail.com のメールは「SHIFT_JIS」(SHIFT JISコード)でエンコードされている
  • @softbank.ne.jp から @googlemail.com のメールは 「ISO-2022-JP」(JISコード)でエンコードされている

なお、MobileMe宛に@softbank.ne.jpからメールを送ると、@googlemail.com宛と同じくJISコードでエンコードされています。

これらの事から、iOSのSMS/MMSアプリは「JISコード」でエンコードしてメールを送るにも関わらず、@gmail.comへのメールのみどこかで「SHIFT JISコード」へ変換されてしまっているのではないかと思います。そして、最新のiOSに含まれるメールアプリが「SHIFT JISコード」エンコードのメッセージも文字化けせずに表示できる様に改善された為、以前は読み取る事が出来なかったメッセージを正しく読める様になったと思われます。

iPhone Tips: Showing public holiday in your iPhone Calendar App (Google Sync)

Do you want to see public holidays in the Calendar App of your iPhone? One of my friends asked me if it can be done. And I answered as “yes”. You can show international public holiday calendar by using Google Calendar and Google Sync. Let me try to explain how to setup. (in Japanese: here)

1. What do you need?

  • Google account (Gmail account)
  • iPhone or iPad
  • PC or Mac (for subscribing public holiday calendar)

2. Google Calendar setting

You need to subscribe public holiday calendar first. To do so, visit Google Calendar from your Mac or PC and subscribe calendar from the list of countries.

Step 1: Visit Google Calendar from your Mac or PC. And sign in with your Google account (Gmail account).

Step 2: Click “Settings” then select “Calendar settings”.

Step 3: In Calendar Settings screen, click “Calendars” follow by clicking “Browse interesting calendars”.

Step 4: From list of the interesting calendars, select country and click “Subscribe” or click “Unsubscribe” if you do not want to see the country’s public holiday. Once finish, click “Back to calendar” link.

Step 5: Now you should be able to see public holidays of selected country in your Google Calendar.

3. iPhone Account Setup

You need to setup Gmail account in your iPhone as “Microsoft Exchange” in order to sync Google subscribing calendars. If you already configure Gmail account, you shall turn OFF the calendar toggle switch in your Gmail account setting.

Step 1: Go “Settings” – “Mail, Contacts, Calendars” – “Add Account” then tap “Microsoft Exchange” (Not Gmail).

Step 2: Input your Gmail account details, then tap “Next”

Email: Your Gmail address

Domain: gmail.com

Username: Your Gmail address (including @gmail.com)

Password: Password of your Gmail account

Description: Your choice.

Step 3: You will be redirected to the same screen, but now with new field called “Server”. Input “m.google.com” to the “Server” field, then tap “Next” again.

Step 4: If you provide correct account information, you will see list of information to be sync with your iPhone. You can ON/OFF each services. Keep Calendars “ON” for syncing public holiday calendars to your iPhone. Tap “Save” to complete.

By the way, if you use Microsoft Exchange to configure your Gmail account, email messages will be PUSH to your iPhone. But iPhone will FETCH if you use Gmail to setup your Gmail account.

4. Select Calendars to be Synced to your iPhone

Final stage. You have to use Safari App on your iPhone to select calendars to be synced to your iPhone.

Step 1: Open Safari App and access to Google Sync.

Step 2: Tap “Sign in with your Google Account” then sign in with your Google account. Google Sync will show device list which you ever configured Google account before.

Step 3: Tap the device in the list. If you have more than one devices, look at “Last sync” date and time to determine your current device.

Step 4: Check and uncheck calendars in the list. You should see subscribing public holiday calendars in “Shared Calendars” section. Check the calendars which you want to see in your iPhone Calendar App. Tap “Save” when you are done.

Step 5: Close Safari App and open Calendar App. You should see holidays in your iPhone Calendar now. You will know country by looking at color of the holidays if you are subscribing public holiday calendar of more than one countries. Tap “Calendars” button to see the list of calendars from Google Sync.

Well done. Hope this works on your iPhone too.

Oh, but please take note that the Google public holiday calendar is not accurate sometimes. Better look at your corporate calendar too. :p

softbank.ne.jpメールアドレスからgmailへのメール文字化け

ウチはiPhoneで主にGmailのメールアドレスを使って知人や家族とメールのやり取りをしているのですが、時々文字化けしてしまうメッセージがあって困ります。

文字化けするメッセージは@softbank.ne.jpのMMSとしてGmail宛に送信されてきたものでした。幸い、Gmail以外のアドレスも所有しているので、その知人とのメールのやり取りは、別のアドレスでやり取りをして文字化けを回避しているのですが、Gmailしか利用していない場合には不便です。

どうしてもGmailのアドレスで@softbank.ne.jpからのメールを受け取る必要がある場合、なんとか文字化けをさせずに受け取る方法がありました。ただし、受け取る側では回避できません。メールを送る側で対応してもらう必要があります。

ずっと以前から文字化けする状況の様なので、既にご存知の方も多いとは思いますが….。

Gmailのアカウントを作成すると、2つのアドレスが生成されています。例えばユーザー名が X X X とします。

その場合

  • X X X @gmail.com
  • X X X @googlemail.com

の二つのメールアドレスが出来上がっており、どちらに送信されたメールも受け取る事が出来ます。

本題の @softbank.ne.jp からの gmail へのメールの文字化けです。
@gmail.com 宛に送信されたメールは文字化けし、 @googlemail.com 宛のメールは文字化けしません。よって、送信する側の人に @googlemail.com 宛にメールを送信してもらう事で文字化けせずに受け取る事が出来ます。

ちなみに、Mail Appのメール一覧では文字化けせずに見えるのですが、各メッセージをタップすると @gmail.com 宛のメールは文字化けしてしまいます。 @googlemail.com 宛のメールは文字化けせずに読む事が出来ます。

考慮すべき事は、iPhoneから送信するメッセージです。メールアカウントを @gmail.com で設定している場合、@softbank.ne.jp 宛に送るメッセージも送信元が @gmail.com になってしまいます。そのため、返信された時にやはり文字化けしてしまいます。実験としてiPhoneのメールアカウントを設定する時に @googlemail.com のアドレスを使用してみましたが、実際に送信されるメールの送信元は @gmail.com になっていました。

さらに@gmail.com 宛に届いたメールを別の @googlemail.com 宛に転送しても文字化けしてしまいました。

色々試しましたが、一応文字化けを回避する方法があるとはいえ、あまり実用性のある回避策ではなさそうです。早くにSoftBankかGmailが解決して貰えると良いのですが….。

iPhone: 休日をiPhoneのカレンダーに表示する方法 (Google Sync)

iPhone, iPadには標準でカレンダーAppがインストールされていて、iTunes経由やネットワーク経由で同期して仕事やプライベートの予定を表示したり、手軽に曜日を調べたりする事が出来て便利。ところが、休日が表示されないので、仕事で会議の予定を立てるときや、休みの計画を練るときには少々不便かもしれません。App Storeには標準カレンダーAppを置き換える予定表アプリなどがありますが、せっかく標準で搭載されているAppを使わないのも勿体無い気がします。

そんなとき、Googleユーザーであれば追加費用無しで日本に限らず、世界各国の休日をiPhone, iPadのカレンダーに表示する事が出来ますので、紹介してみます。ウチはiPhone 3GSの頃から使っていましたが、最近iPhone 4やiPadが発売されてますますiOSユーザーが増加中なのでまとめてみました。参考にして頂ければ幸いです。

手順その1: Gmailアカウントの設定

持っているGmailアカウントをiPhoneに設定します。[設定] – [メール/連絡先/カレンダー]の画面でアカウントを追加すると、どの情報を同期するかをON/OFFする画面が表示されるので、忘れずカレンダーをONにしておきます。

詳しい設定方法は以前紹介した「iPhone: Gmailアカウントのセットアップ方法による違い – プッシュとフェッチ」のエントリーもご覧下さい。

手順その2: Googleカレンダーに休日を追加

この手順はMacないしはPCで行う必要があります。WebブラウザでGoogleカレンダーにアクセスします。作ったばかりのGoogleカレンダーは「マイカレンダー」に1つカレンダーがあるだけの状態だと思います。今回は、「他のカレンダー」に日本の祝日を追加してみます。

マイカレンダーの下にある「設定」をクリックします。カレンダーの共有設定や新しいカレンダーの作成が出来る画面ですが、中央あたりの右側にある「おすすめのカレンダーを検索」をクリックします。

すると、各国の休日カレンダーのリストが表示されます。名前順になっているので、下の方にスクロールして「日本の祝日」を探し出し、その行の右側にある「登録」をクリックします。ちなみに、表示を止めたい時は「登録解除」をクリックすればいつでも設定できます。登録したら画面上の方の「カレンダーに戻る」をクリックして戻ります。

すると、日本の祝日がカレンダーに表示されているはずです。余談ですが、休日らしい赤系の色に変更する事も出来ます。ただし、iPhoneには反映されません。

手順その3: iPhoneに休日のカレンダーを表示

いよいよ最後の手順です。まずはiPhone上でSarafiを起動し、「http://m.google.com/sync/」へアクセスします。
すると「未対応の端末です」と表示されてしまいますが、画面中央付近にある「言語を変更」をタップして、言語をEnglishへ変更します。
すると日本語ではありませんがiPhone用のGoogle Sync画面が表示されるはずです。

早速「Sign in with your Google Account」をタップして、ログインします。無事ログインできると、持っているデバイスのリストが表示されるはずです。複数台iPhoneを持っている場合(3G、3GS、4など)はこの様に全て同じ様に表示されてしまいますが、最終同期日時を元に選ぶか、全てに対して以降の設定をします。

ここで表示されている同期日時はメールやメインとなるマイカレンダーがiPhoneへ最終的に同期された日時を表しています。iPhoneにGmailのアカウントを作成し、カレンダーの同期をONにした時点で、マイカレンダーのメインカレンダーはiPhoneへ同期されている為です。

デバイスをタップするとMac / PCで表示した時の様に「My Calendars (マイカレンダー)」と「Shared Calendars(他のカレンダー)」がリストになって表示されるので、先程設定した「日本の祝日」にチェックを入れて右下もしくは右上の「Save」をタップします。

表示できるか確認

全ての設定は終わりました。後はiPhoneのカレンダーAppでちゃんと日本の祝日が表示される事を確認します。

追加したばかりの「他のカレンダー」は設定してあげないと表示されない場合があります。また、上述の作業直後はまだサーバー側で設定が反映されていない為か、時々表示されない場合がありますので、その時はしばらく待ってからiPhoneのカレンダーAppを起動して試してみます。

では、まずカレンダーAppを起動し、左上の「カレンダー」というボタンをタップし、表示するカレンダーを選択する画面に移ります。

見慣れない画面かもしれませんが、iPhoneのカレンダーAppは複数アカウントの複数カレンダーをそれぞれ表示と非表示の設定が出来ます。ウチの場合はMobileMeも契約しているので、GoogleカレンダーとMobileMeカレンダーそれぞれ異なる役割に使い、iPhone上ではその全てを表示しています。

この画面は、そのiPhoneに設定されているカレンダーを同期しているアカウント毎に、どのカレンダーを表示するか選択する画面です。最初、Gmailのセクションには「日本の祝日」は表示されていませんが、しばらくすると表示されました。カレンダーAppとGoogleのサーバーがネットワーク経由で通信をして、新しく同期できるカレンダーを見つけた為です。

試しに「日本の祝日」のみにチェックを入れて、右上の完了ボタンをタップします。すると、今日2010年9月20日であれば「敬老の日」と表示されますし、月カレンダーを見ると9月23日にも予定が入っているマークがついて、日本の祝日が「終日イベント」として参照できる様になりました。

もちろん、日常使っているカレンダーと「日本の祝日」カレンダー両方にチェックを入れれば全て一緒に見る事が出来ます。

日本以外の国の休日も同様に表示できます。また、休日だけでなくスポーツ関連のカレンダーとして、日本のプロ野球球団毎の試合日程などを参照する事も出来ますので、色々試してみてください。

なお、GoogleカレンダーとiPhoneとの間でデータ通信が発生します。パケ放題の対象ですが、データ通信をしたくないという方はご注意下さい。

iPhone: Gmailアカウントのセットアップ方法による違い – プッシュとフェッチ

iPhoneを使うようになるとちょっと慣れないのが「メール」の”プッシュ”と”フェッチ”の違い。MobileMeやYahooのメールを設定すると自動的に”プッシュ”となり、そのメールアドレスにメールが届くとiPhone上でメールアプリを開かなくても即座にサーバーからメッセージがiPhoneに届きます。ところが、”プッシュ”に対応していないメールサーバーのアカウントを設定すると、あらかじめ設定しておいた定期的な間隔もしくはメールアプリを起動したときにサーバーにメッセージを取りにいかないとiPhoneにメールが届きません。

ウチが分かりにくいと感じたのがGmailのアカウント設定。iPhoneの「設定」 – 「メール/連絡先/カレンダー」でアカウントを追加する際に “Microsoft Exchange” を選択した場合と “Gmail” を選択した場合で前述のメッセージ配信方法が変わってしまいます。ウチはこの事をGmailがiPhoneへの”プッシュ”に対応した時から知っていたのですが、最近iPhone 4を手に入れた会社の方がご存じなかったので詳しく紹介してみます。既にご存知の方も多いかもしれませんが、新たにiPhoneを使い始めた方の参考になればと思います。

「設定」 – 「メール/連絡先/カレンダー」画面

この画面は基本となるのでまず紹介しておきます。

「設定」- 「メール/連絡先/カレンダー」の画面です。アカウントを追加するには「アカウントの追加…」をタップします。データの取得方法は”プッシュ”になっていますが、あくまでも”プッシュ”を有効にしている場合はこの様に表示されるだけで、設定方法やサーバーの種類によってフェッチになる場合があります。

「アカウントの追加…」をタップするとアカウントの種類を選択する画面が表示されます。

アカウントの追加 – Gmail で設定した場合 = “フェッチ”

「アカウントの追加…」で”Gmail”をタップしてGmailのアカウントを設定してみます。

必要な情報を入力します。

  • 名前: 送信元として表示される名前
  • アドレス:  Gmailのアドレス
  • パスワード: Gmailのパスワード
  • 説明: メールのアカウント一覧で表示されるアカウントの名称

“次へ”をタップして設定を”保存”します。保存後、このアカウントが”プッシュ”か”フェッチ”かを見る為に「メール/連絡先/カレンダー」の画面から「データの取得方法」をタップし、一番下にスクロールして「詳細」をタップします。

この通り、“Gmail”をタップして設定したアカウントは”フェッチ”になります。つまり、Googleのサーバーからメッセージは自動的に配信されず、メールアプリを開くか設定した定期的な時間毎に取りにいく方式になります。

アカウントの追加 – Microsoft Exchange で設定した場合 = “プッシュ”

今度は「アカウントの追加…」で”Microsoft Exchange”をタップして設定してみます。

必要事項を入力します。

  • メール: Gmailのメールアドレス
  • ドメイン: Gmailの場合は gmail.com
  • ユーザ名: Gmailのメールアドレス (@gmail.comを含めて完全に入力)
  • パスワード: Gmailのパスワード
  • 説明: メールのアカウント一覧で表示されるアカウントの名称

“次へ”をタップするとなぜか同じ画面に戻ってしまいますが、今度は「サーバ」という項目が増えているはずです。

Gmailの場合、サーバには m.google.com と入力して再度”次へ”をタップします。さらに同期するアイテムの設定を確認したら”保存”をタップします。さて、今度もこのExchangeアカウントが”プッシュ”か”フェッチ”かを見る為に「メール/連絡先/カレンダー」の画面から「データの取得方法」をタップし、一番下にスクロールして「詳細」をタップします。

この通り、同じGmailのアカウントでも”Microsoft Exchange”で設定すると”プッシュ”になります

プッシュの実験

上述の方法で、Gmailで設定したアカウントとMicrosoft Exchangeで設定したアカウント、両方を用意してみました。

それぞれ”フェッチ”と”プッシュ”です。ちなみに、使っているGmailのアドレスはどちらも同じもの。

この状態で、MacやPCのメールアプリから別のメールアカウント(例えばMobileMeやYahooなど)を使って、このGmailに向けてメールを送ってみます。Exchangeの方は、若干の時差がある場合はありますが放っておけばiPhoneからメールの受信音が聞こえ、メッセージが配送されてくるはずです。

これに対して、Gmailで設定した方は定期的な時間にフェッチする設定になっていない限り、メールアプリ左下の”メールチェック”ボタンをタップしないと配信されてきません。試しに押してみると届いて未読メッセージ数が増えます。全”受信”はGmailとExchangeの両方が入っているので、2件未読になっています。

GmailをiPhoneで使うのであれば圧倒的に”Microsoft Exchange”で設定した方が便利だと思います。ただし、”プッシュ”は場合によってバッテリーを多く消費する場合があるので、メールを即座に確認する必要が無い場合や、受信する件数があまりにも多い場合は、Gmailで設定するか、Microsoft Exchangeで設定し”プッシュ”を無効にする方法もあります。

ところで、iOS 4.0へアップグレード後 Microsoft Exchange のメールアカウントの挙動がおかしい方はAppleのこちらのページも参考にしてみてください。

iCal/アドレスブック と Google カレンダー/連絡先 の同期

MobileMeユーザのウチはMac – iPhoneの情報同期は全てMobileMe経由で行っていますが、もし、Googleも同期したくなった場合にどうしたら良いだろう、もしくはMobileMeを解約してGoogleとの同期で同等のことができるか考え、試してみました。

まず、同期出来る情報ですが、MobileMeではカレンダー、アドレスブック、ブックマーク、さらにMac独特な情報ですがキーチェーン、環境設定、メール・メールのルール等、ほとんどの情報を同期することができます。Mac OS Xの再インストールをした場合でも、MobileMeを利用していれば即座にインストール前の情報を復旧することができます。

GoogleとMacの同期を考えた場合、色々な方法があります。

カレンダーはCalDAVを使うのが一番簡単な方法。iCalの環境設定 – アカウントでアカウントを追加し、アカウントの種類を「Google」(iCal 4の場合)として設定します。ただし、Googleカレンダーが複数ある場合はそのアカウントの「委任」で表示する様にチェックを入れます。その場合、右側の画面の様に、Googleのメイン以外のカレンダーは「委任」の下に複数階層になってしまい、ちょっと見づらいです。また、全ての情報はGoogleサーバー上にあり、ローカルのiCalのカレンダーには保存されません。

アドレスブックの同期については簡単で、アドレスブックの環境設定 – Googleと同期へチェックを入れて(アドレスブック 5 の場合)アカウントの設定を行うのみです。この場合は情報はローカルのアドレスブックに保存されており、Google – Gmailの連絡先の情報と同期される様になります。

その他のMac特有のキーチェーンや環境設定についてはMobileMeと違い、Googleとの同期を行う方法は今のところ無い様ですね。

上述のCalDAVでのカレンダー参照と、アドレスブックの同期は悪くないのですが、MobileMeの様な「ローカルのiCal上のイベントとGoogleカレンダーのイベントを”同期”する」という事は実現されません。CalDAVでのカレンダー参照はGoogleカレンダーをiCalのインタフェースで操作しているに過ぎない為です。また、複数カレンダーがある場合に「参照」の階層に入ってしまうのも残念感があります。

そこで見つけたのが「Spanning Sync」。有料(1年間ライセンス体系の料金設定と、永久ライセンスの料金設定があります)ですが、MobileMeと近い感じでカレンダーとアドレスブックの情報を同期することができます。
購入検討の為に15日間無料で試用することができます。

インストールすると、システム環境設定の項目が追加されます。

試用期間中は、その旨を伝えるメッセージが表示されますが、表示される試用期間の残り日数は計算にミスがある様で、凄い日数が表示されています (^^;;。

画面を並べてみました。
最初のページではGoogleアカウントの設定と同期のタイミング。
2ページ目・3ページ目でカレンダーとアドレスブックの同期設定が出来ます。iCal、Googleそれぞれのカレンダー名の組み合わせと同期の方向を設定したり、Mac上のアドレスブックに含まれるどのグループについてGmailの連絡先と同期するかを設定出来ます。さらに、カレンダーのアラームについてもきめ細かな設定が出来るのが特徴だと思いました。
最後の4ページ目にはメニューバーへのアイコン表示有無設定等があります。

メニューバーのアイコンは同期が正常に行われている時と、エラーがあった場合でアイコンが異なり、何らかの問題がある場合にはすぐ分かる様になっています。正常時は左側のアイコン、エラーが発生した場合は右側のアイコン表示になります。

Spanning Syncを使えば、Google側の情報でiCal / アドレスブックの情報を上書きする事も出来るので、MobileMeを使った場合の様に、Mac OS X再インストール時にすぐ情報をMacへ復元する事も出来そうです。MobileMeの年会費を費やしたくないが、それと近い環境を構築したい場合には良いかもしれません。

また、Mac + Andriodユーザの皆さんはこの方法でMac – Google – Android携帯の情報同期が出来、便利かもしれません。

* Google Gmailの連絡先には氏名の「よみ」が無いなど、アドレスブックと項目が異なる場合がありますので、注意が必要です。

参考: Spanning Sync