iPhone でメールを作成するために MFMailComposeViewController を使用します。これらのメールには、テキスト、テキスト添付ファイル、および一部の画像添付ファイルが含まれます。
if ([MFMailComposeViewController canSendMail]) {
mailController = [[MFMailComposeViewController alloc] init];
[mailController setToRecipients:recipients];
if ([ccRecipients count] > 0) [mailController setCcRecipients:ccRecipients];
[mailController setSubject:project];
[mailController setMessageBody:message isHTML:NO];
if (csv) {
[mailController addAttachmentData:csvData mimeType:@"text/csv" fileName:csvFileName];
}
QEMailAddPicturesOperation * operation = [[QEMailAddPicturesOperation alloc] init];
operation.delegate = self;
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];
}
@implementation QEMailAddPicturesOperation
- (void) main {
....
for (NSString * fileName in listOfPictures) {
NSString * path = [directory stringByAppendingPathComponent:fileName];
NSData * imageData = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:path], PIC_COMPRESSION_RATE );
[mailController addAttachmentData:imageData mimeType:@"image/jpg" fileName:fileName];
}
}
すべて正常に動作し、メールを送信できます。しかし、結果は次のとおりです。
Content-Type: multipart/mixed; boundary=Apple-Mail-256A861D-10BB-4031-8DFB-0E8FDA8F9337
....
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (1.0)
X-Mailer: iPhone Mail (9A405)
....
--Apple-Mail-256A861D-10BB-4031-8DFB-0E8FDA8F9337
Content-Transfer-Encoding: 7BIT
Content-Type: TEXT/plain;
charset=us-ascii
--Apple-Mail-256A861D-10BB-4031-8DFB-0E8FDA8F9337
Content-Disposition: inline;
filename=MFA_001.JPG
Content-Type: IMAGE/jpg;
....
ご覧のとおり、メール コンポーザは、添付された (および base64 コード化された) 画像の間にいくつかのテキスト行を挿入します。
Outlook 2010 は、これらの行を添付ファイル (ATT......) として解釈します。たとえば、8 つの画像を送信すると、8 つの追加の空の添付ファイルが Outlook に作成されます。Outlook は、iPhone メールの署名も添付ファイルとして表示します。Mac 上の Outlook 2011 は動作します。
iPhone で空行が作成されたり、Outlook (2007、2010) で添付ファイルが作成されたりしないようにするにはどうすればよいですか?