7

txt ファイルが正常に作成されました (つまり、ファイルが存在して開きます)。正常に生成された電子メールにそれを添付したいと思います (つまり、電子メールが開き、電子メールにテキストを入力して送信できます)。添付ファイルを実行するためのコードは次のとおりです。

// Attach a file to the email
NSString *path = [self dataFilePath:(@"myFile.txt")];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"text/plain" fileName:@"myFile"];

dataFilePath は、ファイルのパスを取得するために使用するメソッドです。頻繁に使用するので問題なく動作します。上記のコードは < br/ > < br/ > を配置し、テキスト ファイルからのテキストにさらにいくつかの < br/ > < br/ > ..breaks を挿入しています... したがって、これは実際にはファイル メール本文に貼り付け... ファイルを添付したいのですが。

このコードをスタックオーバーフローの他の投稿からコピー/変更しましたが、アップルのサイトで情報を見つけるのに苦労しています。注:彼らのウェブサイト(www.iana.org)はtxtを示していないため、txtファイルのmimeTypeが何であるかわかりません...???

更新: 更新されたコードに変更されました。「plain」が mimeType の正しい選択であることを確認していただきありがとうございます。

4

2 に答える 2

7

これは完全な解決策ではありませんが、プレーン テキストの MIME タイプは次のとおりです。

テキスト/プレーン
于 2009-08-07T04:05:54.393 に答える
3

これは、プログラムではなく、電子メールクライアントの問題である可能性があります。テキストファイルはメール作成ビューに添付ファイルとして表示されますが、メールを受信すると本文に表示されますか?

電子メールを受信したら、その上でソースを表示してみてください(または、オリジナルを表示するか、電子メールクライアントがそれを呼び出すものは何でも)。メールには次のようなものが表示されます。

--Apple-Mail-1-494911569
Content-Disposition: attachment;
    filename=myFile
Content-Type: text/plain;
    name=myFile
Content-Transfer-Encoding: 7bit

Text of the file here.

--Apple-Mail-1-494911569

メールにそれが表示されている場合は、ファイルが正しく添付されています。電子メールクライアントがContent-DispositionMIMEヘッダーを無視している可能性があります。GmailやAppleのメールでは、上記のようなメールセクションは必ず添付ファイルとして表示されます。

価値のあるものとして、ここに、電子メールを作成し、HTML本文を追加し、テキスト添付ファイルを追加し、作成ビューを表示する完全に機能するコードをいくつか示します。

NSData *textData = [[self getEmailAttachment] dataUsingEncoding:NSUTF8StringEncoding];
NSString *htmlData = [self getEmailBodyHTML];

/* Set up the mail compose view and put in the body/attachment */
MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];
[mailComposer setMessageBody:htmlData isHTML:NO];
[mailComposer addAttachmentData:textData mimeType:@"text/plain" fileName:@"tripometer_report.csv"];

/* Set default subject */
[mailComposer setSubject:@"Email subject"];

mailComposer.mailComposeDelegate = self;    
[self presentModalViewController:mailComposer animated:YES];
于 2009-12-06T18:09:18.580 に答える