Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从ipad或iphone发送电子邮件而不使用UI的替代方法_Ios_Http_Sendmail_Mfmailcomposeviewcontroller_Smtpclient - Fatal编程技术网

Ios 从ipad或iphone发送电子邮件而不使用UI的替代方法

Ios 从ipad或iphone发送电子邮件而不使用UI的替代方法,ios,http,sendmail,mfmailcomposeviewcontroller,smtpclient,Ios,Http,Sendmail,Mfmailcomposeviewcontroller,Smtpclient,我发现有很多方法可以在iOS设备中在后台(没有UI)发送电子邮件,并且不使用MFMailComposeViewController类。最流行的例子是填写在线表单并按下提交按钮。下面是我在stackoverflow中看到的最流行的方法 (1) 使用您自己的SMTP客户端。这种方法适用于我,但在我的私人网络中,但不适用于我的公司场所,因为在公司网络中,我不允许使用gmail(公共电子邮件),也没有公司邮件服务器的SMTP详细信息。我对这种做法感到震惊 (2) 使用CTCoreMessage和Thre

我发现有很多方法可以在iOS设备中在后台(没有UI)发送电子邮件,并且不使用MFMailComposeViewController类。最流行的例子是填写在线表单并按下提交按钮。下面是我在stackoverflow中看到的最流行的方法

(1) 使用您自己的SMTP客户端。这种方法适用于我,但在我的私人网络中,但不适用于我的公司场所,因为在公司网络中,我不允许使用gmail(公共电子邮件),也没有公司邮件服务器的SMTP详细信息。我对这种做法感到震惊

(2) 使用CTCoreMessage和Three20框架(开源)。但在这里,我找不到除了git以外的其他地方可以下载这个框架,因为我的pc VLAN不允许git。有人能帮我找到Three20 Framework的可下载位置并与我分享一个示例代码吗

(3) 使用HTTP Post:将电子邮件正文发送到服务器,并将电子邮件发送委托给HTTP服务器。如果这是简单的,那么有人可以帮助我如何设置您自己的HTTP服务器发送电子邮件


任何人都可以帮助找到任何工作的示例代码。我在我的项目交付结束。贴了这么长的回帖。现在还没有回复。有人能帮我吗?

我可以使用HTTP Post为第三个选项提供一些帮助,因为我在一个项目中实现过一次

首先,我曾经替我负责发帖。 然后,下面的iOS代码片段应该向您展示它是如何完成的

NSString* from = @"sender@email";

NSString* to = @"receiver@email";

NSString* mailCc = @"cc@email";

NSString* message = @"my message"

NSString* subject = @"my subject";

NSURL* url = [NSURL URLWithString:@"http://yourtestsite.com/my_email_script.php"];

//these are $_POST variables sent, so 'from' would be $_POST['from']        
NSArray *keys = [[NSArray alloc] initWithObjects:@"from", @"to", @"cc", @"subject", @"message", nil];
NSArray *objects = [[NSArray alloc] initWithObjects:from, to, mailCc, subject, message, nil];  
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];


NSMutableURLRequest* request = [SimplePost urlencodedRequestWithURL:url andDataDictionary:dictionary];
NSURLResponse* response = [[NSURLResponse alloc] init];
NSError* error = [[NSError alloc] init];

NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];

NSString* result = [[NSString alloc] initWithData:returnData encoding:NSStringEncodingConversionAllowLossy];

//I'm checking for 1 because my php script was set to write 1 to the page in case of success and 0 otherwise, so this is simply my implementation
if([result isEqualToString:@"1"]) {
    NSLog(@"success");
} else {
    NSLog(@"error");

}
对于PHP文件,这应该可以做到这一点

$from = filter_var($_POST['from'], FILTER_SANITIZE_EMAIL);

$to = filter_var($_POST['to'], FILTER_SANITIZE_EMAIL);

$cc = filter_var($_POST['cc'], FILTER_SANITIZE_EMAIL);

$subject = htmlspecialchars(utf8_decode($_POST['subject']));

$message = utf8_decode($_POST['message']);

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: ' . $from . "\r\n";

$headers .= 'Cc: ' . $cc . "\r\n";

// Mail it
if(mail($to, $subject, $message, $headers)) {
    echo("1");
} else  {
    echo("0");

   }
请记住,我不是PHP专家,因此代码可能会得到改进,特别是在安全方面

[编辑] PHP邮件应该已经在大多数主要的托管解决方案中启用,无论是廉价的共享帐户、VPS还是专用服务器。但是,如果你打算用这种方法发送大量电子邮件,那么建议使用专用服务器

但是,您可以发送的电子邮件数量有限,而且比
mail
功能有更好的选择。你可以找到更多关于这个的信息

[稍后编辑] 似乎作者删除了SimplePost类。然而,同一位作者提出了一个应该有所帮助的替代方案,称为。其余的应该保持不变

我会考虑使用它,它将使发送电子邮件变得更容易,并且每月可以免费处理多达10万封邮件。如果你没有自己的子域,它们允许你使用它们的子域,但是可以很容易地设置你自己的子域来与它们一起工作


安装cocoapod并添加5行左右的代码就很容易了。

您好,很抱歉反应太晚。我想这种实现方式需要一个专用的Web服务器。你能大致告诉我安装这台服务器要花多少精力吗?如果没有服务器设置,我也无法尝试这种方法。请检查我的编辑。简单的回答是:不太可能,你可以不费吹灰之力地完成这项工作,但这主要取决于你将发送多少封电子邮件。我在一个内部应用程序中使用了这种方法,在极端情况下,每小时发送的电子邮件可能会超过几十封,所以这不是问题。我正在测试您的代码,您是否愿意告诉我什么是“SimplePost”,就像使用“NSMutableURLRequest*request=[SimplePost urlencodedRequestWithURL:url”一样嘿,检查我的编辑,SimplePost似乎不再存在,但有一个替代方案