2

iOS アプリケーションから wav ファイルを添付しようとしていますが、添付ファイルが作成済みメールに表示されていても配信されません。

関連するコードは次のとおりです。

if ([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
    controller.mailComposeDelegate = self;
    [controller setSubject:NSLocalizedString(@"mailTopic", nil)];
    [controller setMessageBody:NSLocalizedString(@"mailBody", nil) isHTML:YES];
    NSString *wavPath = [self exportAssetAsWaveFormat:self.myRec.soundFilePath]; // CAF->Wav export

    if (wavPath != nil) {
        NSLog(@"wavPath: %@", wavPath);
        NSData *recData = [NSData dataWithContentsOfFile:wavPath];
        NSString *mime = [self giveMimeForPath:wavPath];
        [controller addAttachmentData:recData mimeType:mime fileName:@"MySound.wav"];
        [self presentModalViewController:controller animated:YES];
        [controller release];
    }
}


-(NSString *) giveMimeForPath:(NSString *)filePath {
    NSURL* fileUrl = [NSURL fileURLWithPath:filePath];
    NSURLRequest* fileUrlRequest = [[NSURLRequest alloc] initWithURL:fileUrl cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:.1];
    NSURLResponse* response = nil;

    [NSURLConnection sendSynchronousRequest:fileUrlRequest returningResponse:&response  error:nil];
    NSString* mimeType = [response MIMEType];
    NSLog(@"MIME: %@", mimeType);
    [fileUrlRequest release];

    return mimeType;
}

NSLog の結果:

NSLog(@"wavPath: %@", wavPath); -> "wavPath: /var/mobile/Applications/71256DCA-9007-4697-957E-AEAE827FD97F/Documents/MySound.wav"

NSLog(@"MIME: %@", mimeType); -> "MIME: オーディオ/wav"

ファイル パスは問題ない (NSLog データを参照)、MIME タイプは "audio/wav" に設定されています..これを理解することはできません..

4

2 に答える 2

2

エラーは、wav ファイルから NSData を作成するまでに、wav ファイルが 100% 書き込まれていないことでした..

努力してくれてありがとう

于 2012-05-02T09:02:30.243 に答える
0

宛先がそのタイプの添付ファイルを削除している可能性がありますか? .wav を含むメッセージを手動で送信してみて、それが機能するかどうかを確認しましたか? Zendeskに送信しようとして同じ問題が発生しました。一部の MIME タイプの添付ファイルを削除していることが判明しました。

于 2012-04-30T10:19:30.950 に答える