每次我尝试通过skpsmtpmessage库附加plist文件时,它们都会在电子邮件中显示其正确的相应名称,但大小为0字节。这是代码:
-(void) sendMessage{
NSLog(@"Start Sending");
SKPSMTPMessage *test_smtp_message = [[SKPSMTPMessage alloc] init];
test_smtp_message.fromEmail = @"jaredloo@live.com.sg";
test_smtp_message.toEmail = @"vest@un0wn.org";
test_smtp_message.relayHost = @"smtp.live.com";
test_smtp_message.requiresAuth = YES;
test_smtp_message.login = @"jaredloo@live.com.sg";
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 = @"testbcc@test.com";
// 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];
}
这是电子邮件(在vest@un0wn.org一侧)[GMAIL]
Jared Aaron Loo jaredloo@live.com.sg 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 :(得分:0)
至少有两个可能的原因:
NSData *crashData = [NSData dataWithContentsOfFile:filePath];
和
...
[crashData encodeBase64ForData],kSKPSMTPPartMessageKey,
...
如果您无法从磁盘读取文件,则第一个可能会失败,如果您的base64编码由于某种原因失败,则第二个可能会失败。尝试为这些方法中的任何一种插入nil结果的验证并正确处理错误。