0

我正在尝试手动创建一个仅包含用户电子邮件地址、主题和电子邮件内容的迷你邮件模块。它只是为我的应用程序提供快速的客户支持。我还想隐藏我的电子邮件地址,因为我只是使用我的 gmail 帐户而不是我公司的电子邮件帐户。这是为了确保良好和及时的服务,因为 gmail 以它而闻名。

问题是当我使用以下命令将“电子邮件”内容发送到我的 PHP 服务器时:

- (void)sendMail{
    NSString *rawStr = [NSString stringWithFormat:@"http://www.somedomain.com/iosuser.php?id=%@__%@__%@__%@",[self getMacAddress],emailAdd.text,subject.text,content.text;];

    NSLog(@"%@",rawStr);
    NSURL *url = [NSURL URLWithString:rawStr];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    NSURLResponse *response;
    NSError *err;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    NSLog(@"responseData: %@", responseData);
}

NSLograwStr工作正常,显示 url、电子邮件地址、主题和内容的所有内容:

http://www.somedomain.com/iosuser.php?id=C8:2A:14:22:92:E2__test@test.com__SubjectTest__ContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTest

但是返回的 NSLog responseDataresponseData: (null)所以实际上没有发送任何内容。

emailAdd 和主题是 UITextField 输入,而内容来自 UITextView 输入。我想知道 UITextView 是否是问题所在。如果这是一个愚蠢的问题,真的很感激任何指示并道歉。

注意:我尝试使用rawStr浏览器上的 NSLog 输出来手动测试脚本并且它可以工作。

4

3 回答 3

1

我认为 UITextView 不是问题。因为您通过NSLog(@"%@",rawStr);. 您没有从服务器得到正确的响应,我对此不是 100% 确定的。所以请检查以下链接:

-[NSURLRequest sendSynchronousRequest:returningResponse:error:] 取回 HTTP 标头

使用 NSURLConnection sendSynchronousRequest 处理错误

于 2012-06-15T19:17:20.787 回答
1

我认为您的问题是@URL 中的符号(除非指定我相信的用户名,否则不允许这样做)

您应该先转义所有字符串,然后再将它们放入网址中

NSString *rawStr = [NSString stringWithFormat:@"http://www.somedomain.com/iosuser.php?id=%@__%@__%@__%@",
                    [[self getMacAddress] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [emailAdd.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [subject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [content.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
于 2012-06-15T19:56:07.290 回答
0

它实际上属于 iOS 采用的最基本的 URL 语法……没有空格。我用下划线替换了所有空格

rawStr = [rawStr stringByReplacingOccurrencesOfString:@" " withString:@"_"];

为了更好的处理,我从同步改为异步。

于 2012-06-15T20:49:41.143 回答