0

アプリで .PHP ファイルを添付ファイルとしてメールを送信したい:

if ([MFMailComposeViewController canSendMail])
{
    MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
    mailViewController.mailComposeDelegate = self;
    [mailViewController setSubject:@""];
    [mailViewController setMessageBody:@"" isHTML:NO];
    mailViewController.navigationBar.tintColor = [UIColor blackColor];
    NSData *myData = [NSData dataWithContentsOfFile:[self getScriptPath]];
    NSString *fileName = @"upload.php";
    [mailViewController addAttachmentData:myData mimeType:@"text/html" fileName:fileName];
    [self presentViewController:mailViewController animated:YES completion:nil];
    [mailViewController release];
}
else 
    NSLog(@"Device is unable to send email in its current state.");

メールは送信されていますが、添付ファイルがありません!...

4

3 に答える 3

3

あなたの[self getScriptPath]メソッドは無効なパス、または存在しないファイルへのパスを返すに違いないので、[NSData dataWithContentsOfFile:...]おそらくnil.

ブレークポイントまたは NSLog を使用して返された値を確認し、getScriptPathそれに応じて修正する必要があります。

たとえば、"upload.php"ファイルをアプリケーションに埋め込んだ場合 (アプリケーションの他のリソースとともに Xcode プロジェクトに追加した場合)、これを使用して、バンドル内のスクリプト ファイルの有効なパスを取得する必要があります。

-(NSString*)getScriptPath
{
    return [[NSBundle mainBundle] pathForResource:@"upload" ofType:@"php"];
}

詳細については、バンドル プログラミング ガイドのドキュメントを参照してください。

于 2012-11-07T13:08:56.940 に答える
0

このコードを使用して、画像ファイルを添付します。

UIImage *emailImage = [UIImage imageNamed:@"loveCoding.png"];
[mailViewController addAttachmentData:UIImageJPEGRepresentation(emailImage, 1) mimeType:@"image/png" fileName:@"loveCocoa.png"];

ファイルを添付するには

    NSString *fileName = [NSString stringWithFormat:@"Documents/%@.txt",sGame.userName];
    NSString *fullFilePath = [NSHomeDirectory() stringByAppendingPathComponent:fileName];

    NSString *emailFileName = [NSString stringWithFormat:@"%@_Report.txt",sGame.userName];

    NSData *myData = [NSData dataWithContentsOfFile:fullFilePath];

    [email addAttachmentData:myData mimeType:@"text/plain" fileName:emailFileName];
于 2012-11-07T13:05:49.003 に答える
0

NSData が正しく読み込まれていないようです。getScriptPath からパスを確認してください

于 2012-11-07T13:07:02.717 に答える