通过网页将文本视图文本作为电子邮件发送

时间:2015-04-21 09:45:52

标签: ios xcode swift email

所以我制作的应用需要用户输入TextView的文本通过API通过电子邮件发送到电子邮件。我已经有一个API设置,我问它的主人如何在Xcode中发送电子邮件。这是他的回复:

"重新发送电子邮件API ...您实际上可以回到网站上已存在的API ....

如果您发送了POST变量' message_txt'到http://www.fakewebaddress.com/email.php"它应该发送电子邮件"

现在是开发新手,我努力想找到办法。

所以回顾一下我要问的问题:如何通过上述链接从TextView中获取文本?

由于

1 个答案:

答案 0 :(得分:0)

在UI中添加UITextView。然后在标题(.h)文件中声明它,如下所示:

IBOutlet UITextView *emailText;

然后将UITextView链接到Interface Builder中的emailText。然后在您的实现文件(.m)文件中,创建一个可用于将POST请求发送到PHP文件的方法,如下所示:

-(void)sendEmail {

    NSString *post = emailText.text;
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:@"http://www.fakewebaddress.com/email.php"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
}

注意

我想补充一点,您尚未指定PHP文件将如何处理文本数据。它是否需要它作为正文的一部分(可能是JSON文件)还是它接受查询(URL的一部分)?我添加的示例将数据添加到POST |请求正文。

<强>更新

抱歉,我没有注意到你想在Swift中使用它。以下是Swift中POST请求的示例:

func sendEmail() {

    let url = NSURL(string:"http://www.fakewebaddress.com/email.php")
    let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
    var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
    request.HTTPMethod = "POST"

    // set Content-Type in HTTP header
    let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
    let contentType = "multipart/form-data; boundary=" + boundaryConstant
    NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)

    // set data
    var dataString = emailText.text
    let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
    request.HTTPBody = requestBodyData

    // set content length
    //NSURLProtocol.setProperty(requestBodyData.length, forKey: "Content-Length", inRequest: request)

    var response: NSURLResponse? = nil
    var error: NSError? = nil
    let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

    let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
    println("API Response: \(results)")
}