我尝试使用PHP联系表单从我的应用程序发送电子邮件,但由于某种原因无法从应用程序发送详细信息。请告诉我是什么问题..我已经附上了我最后使用的php表单。
当我尝试使用网络浏览器发送电子邮件并撰写:http://www.bergerz.co.il/wp-content/themes/ecobiz/sendemailfromapp.php/?name=MYNAME&subject=SUBJECT&email=yositsa@gmail.com&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 :(得分: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"];