I love iPhone, Android, Cocos2d-x
[iPhone] MFMailComposeViewController で画像入りの HTML メールを送る
MFMailComposeViewController を使うと簡単にアプリ内から簡単にメール送信することができます。HTML メールも送信することが可能ですが、HTML で img タグを使うときには画像ファイルを Base64 エンコードする必要があります。
NSData+Base64
下記サイトの下の方にある NSData+Base64 のコードをダウンロードしてプロジェクトに追加します。
Cocoa with Love: Base64 encoding options on the Mac and iPhone
img タグを入れた HTML メールを送る
HTML メールを送るには以下のようにします。
NSMutableString* emailBody = [[[NSMutableString alloc] initWithString:@""] retain]; // HTML で本文を作成する [emailBody appendString:@"太字"]; [emailBody appendString:@""]; MFMailComposeViewController* mailvc = [[MFMailComposeViewController alloc] init]; mailvc.mailComposeDelegate = self; [mailvc setSubject:@"subject"]; [mailvc setToRecipients:[NSArray arrayWithObject:@"hoge@example.com"]]; [mailvc setMessageBody:emailBody isHTML:YES]; [self presentModalViewController:mailvc animated:YES]; [mailvc release]; [emailBody release];
しかし、img タグはタグを入れただけでは画像を本文内に表示させることはできません。img タグを使用する場合は、以下のように画像データを Base64 でエンコードして入れます。
NSString* path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"gif"]; NSData* data = [NSData dataWithContentsOfFile:path]; NSString* base64String = [data base64EncodedString]; [emailBody appendString:[NSString stringWithFormat:@"<img src='data:image/gif;base64,%@'>", base64String]];
関連する投稿
3 comments
コメントをどうぞ
Additional comments powered by BackType
メモ 後で読みます RT @syuhari [blog] [iPhone] MFMailComposeViewController で画像入りの HTML メールを送る http://is.gd/dBuMZ
This comment was originally posted on Twitter
初めまして
iphoneアプリ開発においてhtmlメールの記載をされてあるサイトが少なく、貴ブログへたどり着きました。
現在、ios5 iphone4s の開発環境でアプリを作成中です。
htmlメールを送信するボタンを実装したくいろいろと思考錯誤しておりますが、どうしても画像をインラインで表示できません。
一応、MFMailComposeViewControllerのプレビュー画面までは
画像はしっかり表示されていますが、送信した後、受信先のメーラーでは画像が抜けてしまいます。
受診後のメーラーでのソースは以下となってしまいました。
>
base64でエンコードはうまくいっているようなんですが
何かよい知恵はありますでしょうか?
3distributors…
…