2011-10-18 17 views
0

每次我嘗試通過skpsmtpmessage庫附加plist文件時,它們都會在電子郵件中顯示其相應的名稱,但大小爲0字節。下面是代碼:如何使用skpsmtpmessage正確連接plist文件?

-(void) sendMessage{ 

NSLog(@"Start Sending"); 

SKPSMTPMessage *test_smtp_message = [[SKPSMTPMessage alloc] init]; 
test_smtp_message.fromEmail = @"[email protected]"; 
test_smtp_message.toEmail = @"[email protected]"; 
test_smtp_message.relayHost = @"smtp.live.com"; 
test_smtp_message.requiresAuth = YES; 
test_smtp_message.login = @"[email protected]"; 
test_smtp_message.pass = @"blabla"; 
test_smtp_message.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS! 
test_smtp_message.subject = @"An application has crashed!"; 




// test_smtp_message.bccEmail = @"[email protected]"; 

// Only do this for self-signed certs! 
// test_smtp_message.validateSSLChain = NO; 
test_smtp_message.delegate = self; 

NSMutableArray *parts_to_send = [NSMutableArray array]; 

//If you are not sure how to format your message part, send an email to your self. 
//In Mail.app, View > Message> Raw Source to see the raw text that a standard email client will generate. 
//This should give you an idea of the proper format and options you need 
    /*NSDictionary *plain_text_part = [NSDictionary dictionaryWithObjectsAndKeys: 
            @"text/plain\r\n\tcharset=UTF-8;\r\n\tformat=flowed", kSKPSMTPPartContentTypeKey, 
            [@"Sample message body here!" stringByAppendingString:@"\n"], kSKPSMTPPartMessageKey, 
            @"quoted-printable", kSKPSMTPPartContentTransferEncodingKey, 
            nil]; 
    [parts_to_send addObject:plain_text_part];*/ 



    //NSString *image_path = [[NSBundle mainBundle] pathForResource:@"Success" ofType:@"png"]; 
    NSArray *crashList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/User/Library/Logs/CrashReporter" error:nil]; 
    NSLog(@"CrashList: %@", crashList); 
    if ([crashList count] != 0) 
    { 
     for (int i=0; i < [crashList count]; i++) { 
      NSString *filePath = [NSString stringWithFormat:@"/User/Library/Logs/CrashReporter/%@",[crashList objectAtIndex:i]]; 
      NSData *crashData = [NSData dataWithContentsOfFile:filePath]; 
      NSString *directory = @"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\""; 
      directory = [directory stringByAppendingFormat: filePath]; 
      directory = [directory stringByAppendingFormat: @"\""]; 
      NSString *attachment = @"attachment;\r\n\tfilename=\""; 
      attachment = [attachment stringByAppendingFormat: filePath]; 
      attachment = [attachment stringByAppendingFormat: @"\""]; 
      NSDictionary *image_part = [NSDictionary dictionaryWithObjectsAndKeys: 
             directory,kSKPSMTPPartContentTypeKey, 
             attachment,kSKPSMTPPartContentDispositionKey, 
             [crashData encodeBase64ForData],kSKPSMTPPartMessageKey, 
             @"base64",kSKPSMTPPartContentTransferEncodingKey,nil]; 
      /* 
      [NSDictionary dictionaryWithObjectsAndKeys: 
      @"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"test.vcf\"",kSKPSMTPPartContentTypeKey, 
      @"attachment;\r\n\tfilename=\"test.vcf\"",kSKPSMTPPartContentDispositionKey, 
      [vcard_data encodeBase64ForData],kSKPSMTPPartMessageKey, 
      @"base64",kSKPSMTPPartContentTransferEncodingKey,nil]; 

      */ 
      [parts_to_send addObject:image_part]; 
     } 
    } 

test_smtp_message.parts = parts_to_send; 

[test_smtp_message send]; 

} 

這裏是電子郵件(上[email protected]的側)的[Gmail]

Jared Aaron Loo [email protected] to me 

show details 3:58 PM (39 minutes ago) 
6 attachments — Download all attachments 

    /User/Library/Logs/CrashReporter/LatestCrash-TableViewControl.plist 
0K Import to Contacts Download 
    /User/Library/Logs/CrashReporter/LatestCrash-iSoda.plist 
0K Import to Contacts Download 
    /User/Library/Logs/CrashReporter/LatestCrash.plist 
0K Import to Contacts Download 
    /User/Library/Logs/CrashReporter/TableViewController_09_2011-10-18-104430_Jareds-iPhone.plist 
0K Import to Contacts Download 
    /User/Library/Logs/CrashReporter/TableViewController_09_2011-10-18-104822_Jareds-iPhone.plist 
0K Import to Contacts Download 
    /User/Library/Logs/CrashReporter/iSoda_2011-10-18-105543_Jareds-iPhone.plist 
0K Import to Contacts Download 

任何幫助是非常感謝! :)

+0

我已經使用了類似的代碼,如下所示,目前沒有問題。你的控制檯/日誌說什麼?也許圖像太大? – Zammbi

回答

0

有(至少)兩個可能的原因是:

NSData *crashData = [NSData dataWithContentsOfFile:filePath]; 

... 
[crashData encodeBase64ForData],kSKPSMTPPartMessageKey, 
... 

,如果你無法從磁盤讀取和文件的第一個可能失敗其次,如果你的base64編碼由於某種原因失敗,可能會失敗。嘗試爲這些方法中的任何一個的零結果插入驗證並正確處理錯誤。

+0

我已經確定crashData和kSKPSMTPPartMessageKey在發送時不是零。我甚至嘗試用encodeWrappedBase64ForData替換encodeBase64ForData,但無濟於事。 –

+0

你看過正在發送/接收的原始電子郵件嗎?也許這可能會提供線索。 –

+0

嗨,我已經在另一個示例應用程序中實現了完全相同的邏輯,這似乎工作。但是,當它在我的應用程序中實現時,它不會。不知道爲什麼= / –