2012-02-18 151 views
-3

我试图用我的应用程序发送一封电子邮件与PHP联系表格,但由于某种原因无法从应用程序发送详细信息。请告诉我什么是问题..我已经附上了我在最后使用的php表单。将数据发送到PHP表格时出错

当我尝试使用网络浏览器发送电子邮件并写入:http://www.bergerz.co.il/wp-content/themes/ecobiz/sendemailfromapp.php/?name=MYNAME&subject=SUBJECT&[email protected]&message=MESSAGE时,它工作正常。

-(IBAction)send:(id)sender 
{ 
    NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init]; 

    NSString * urlString = [NSString stringWithFormat:@"http://www.bergerz.co.il/wp-content/themes/ecobiz/sendemailfromapp.php"]; 

    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"REQUEST"]; 

    NSString * paramDataString = [NSString stringWithFormat:@"name=%@&subject=%@&email=%@&message=%@",[txtName.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtSubject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtEmail.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtMessage.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    NSData*paramData = [paramDataString dataUsingEncoding:NSUTF8StringEncoding]; 
    [request setHTTPBody:paramData]; 

    NSURLResponse * response; 
    NSError * error; 

    NSData * aData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//excute of data to the internet 
    NSString * requestData = [[NSString alloc] initWithData:aData encoding:NSUTF8StringEncoding]; 
    if ([requestData isEqualToString:[NSString stringWithFormat:@"sent"]]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"Message Sent.."; 
    } 
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_NAME_ERROR"]]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"Name is too short"; 
    } 
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_EMAIL_ERROR"]]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"Email is too short"; 
    } 
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"EMAIL_WRONG_ERROR"]]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"Email wrong error"; 
    } 
    else if ([requestData isEqualToString:[NSString stringWithFormat:@"NO_MESSAGE_ERROR"]]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"Message is too short"; 
    } 
    else if ([requestData isEqualToString:@"NULL"]) 
    { 
     lblStatus.hidden = NO; 
     lblStatus.text = @"EMPTY"; 
    } 
    NSLog(@"request: %@",request); 
    NSLog(@"requestData: %@",requestData); 
    NSLog(@"aData: %@",aData); 
} 

这里是php文件:http://www.pastebin.com/BvaiMs04

我编辑的消息给我最新的代码,他仍然是行不通的。

+0

你有什么错误吗?它停在哪里? – Emil 2012-02-18 13:13:49

+0

我得到的唯一错误是'FROM_IS_EMPTY'。这是PHP表单的第一个错误。即使当表单已满,我收到了这个错误。 – 2012-02-18 13:20:09

回答

3

ParamDataString应该是name=%@&subject=%@...没有/?

AND:你要逃离输入字符串:[txtName.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[txtSubject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ...

或填充一切都变成NSDictionary中,并使用urlEncodedString

NSDictionary *postParams = [[NSDictionary alloc] initWithObjectsAndKeys: txtName.text, @"foo", txtSubject.text, @"bar", nil]; 
//... 
NSString *sPostParams = [postParams urlEncodedString]; 
[request setHTTPBody:[NSData dataWithBytes:[sPostParams UTF8String] length:[sPostParams length]]]; 

发现了另一个错误:HTTP方法应该是POST, “_REQUEST” 不不存在... [request setHTTPMethod:@"POST"];

+0

仍然不会工作.. – 2012-02-18 13:18:36

+2

“不会工作”不是一个错误说明... – pencil 2012-02-18 13:21:43

+0

它不会工作与我写的'FROM_IS_EMPTY'相同的错误,这是PHP文件的第一个错误信息,通常当表单已经发送空了。 – 2012-02-18 13:26:12