2010-12-15 37 views
0

我正在通过PHP脚本发送电子邮件。这工作正常使用NSMutableURLRequest,但我想附加一个图像的电子邮件以及。发送数据 - NSMutableURLRequest

下面是我使用的代码:

NSMutableURLRequest *request = 
    [[NSMutableURLRequest alloc] initWithURL: 
    [NSURL URLWithString:@"http://example.com/email.php"]]; 

    [request setHTTPMethod:@"POST"]; 

    NSString*subject = [NSString stringWithFormat:@"Images from %@",[[UIDevice currentDevice] name]]; 

    NSString*to = [[NSUserDefaults standardUserDefaults] objectForKey:@"PreferredPrinterEPrint"]; 

    NSString *postString = [NSString stringWithFormat:@"to=%@&message=%@&subject=%@",to,@"hi",subject]; 

    [request setValue:[NSString 
         stringWithFormat:@"%d", [postString length]] 
    forHTTPHeaderField:@"Content-length"]; 

    [request setHTTPBody:[postString 
          dataUsingEncoding:NSUTF8StringEncoding]]; 

    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

我见过它描述发送图像的文章here,但我不知道如何将两者结合起来。有人能帮助我吗?

谢谢!

回答

1

ASIHTTPRequest有一个名为ASIFormDataRequest的类,它使得发布数据非常简单,并且包含用单行附加文件的功能。我强烈推荐它。

+0

感谢 - 但是这可能使用'NSMutableURLRequest'吗? – Pripyat 2010-12-15 22:00:28

+0

是的,就像你指向的链接一样。对不起,我不记得是否可以合并它们:自从我开始使用ASIHTTPRequest以来,我几乎忘记了所有的NSURLConnection。 – 2010-12-15 22:17:55

0

发送JPEG图像的例子:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://example.com/email.php"]]; 

[request setHTTPMethod:@"POST"]; 

NSString *boundary = @"Some string as you like"; 
NSString *value = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request setValue:value forHTTPHeaderField:@"Content-Type"]; 

NSString *subject = [NSString stringWithFormat:@"Images from %@", [[UIDevice currentDevice] name]]; 
NSString *to = [[NSUserDefaults standardUserDefaults] objectForKey:@"PreferredPrinterEPrint"]; 

NSData *fileData = [NSData dataWithContentsOfFile:<file path>] 

NSMutableString *postDataString = @"".mutableCopy; 
[postDataString appendFormat:@"--%@\r\n", boundary]; 
[postDataString appendFormat:@"Content-Disposition: form-data; name=\"to\"\r\n"]; 
[postDataString appendFormat:@"\r\n%@\r\n", to]; 
[postDataString appendFormat:@"--%@\r\n", boundary]; 
[postDataString appendFormat:@"Content-Disposition: form-data; name=\"message\"\r\n"]; 
[postDataString appendFormat:@"\r\n%@\r\n", @"hi"]; 
[postDataString appendFormat:@"--%@\r\n", boundary]; 
[postDataString appendFormat:@"Content-Disposition: form-data; name=\"subject\"\r\n"]; 
[postDataString appendFormat:@"\r\n%@\r\n", subject]; 
[postDataString appendFormat:@"--%@\r\n", boundary]; 
[postDataString appendFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", <file name>, <file name>]; 
[postDataString appendFormat:@"Content-Type: image/jpg\r\n"]; 
[postDataString appendFormat:@"Content-Transfer-Encoding: binary\r\n\r\n"]; 

NSMutableData *postData = [postDataString dataUsingEncoding:NSUTF8StringEncoding].mutableCopy; 

[postData appendData:fileData]; 

[postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[request setValue:[NSString stringWithFormat:@"%d", postDataString.length] forHTTPHeaderField:@"Content-length"]; 
[request setHTTPBody:postData]; 

[[NSURLConnection alloc] initWithRequest:request delegate:self];