2010-12-15 138 views
0

J'envoie un e-mail via un script PHP. Cela fonctionne bien en utilisant NSMutableURLRequest, mais je voudrais aussi joindre une image à l'e-mail.Envoi de données - NSMutableURLRequest

Voici le code que je utilise:

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]; 

Je l'ai vu un article here qui décrit l'envoi d'images, mais je ne sais pas comment combiner les deux. Quelqu'un pourrait-il être si gentil m'aider?

Merci!

Répondre

1

ASIHTTPRequest possède une classe appelée ASIFormDataRequest qui facilite grandement la publication des données et permet de joindre des fichiers avec une seule ligne. Je le recommande fortement.

+0

merci - mais est-ce possible en utilisant 'NSMutableURLRequest' aussi? – Pripyat

+0

Oui, tout comme le lien que vous avez pointé. Désolé, je ne me souviens pas si vous pouvez les combiner, cependant: J'ai oublié à peu près tous les trucs NSURLConnection depuis que j'ai commencé à utiliser ASIHTTPRequest. –

0

Exemple d'envoi de l'image 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];