Возможно, я смогу предоставить некоторую помощь для третьего варианта, используя HTTP Post, так как я реализовал его один раз в проекте.
Во-первых, я использовал this nice and simple iOS class, чтобы позаботиться о публикации для меня. Затем следующий IOS фрагмент кода должен показать вам, как это делается
NSString* from = @"[email protected]";
NSString* to = @"[email protected]";
NSString* mailCc = @"[email protected]";
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
. Вы можете найти дополнительную информацию об этом here.
[позже изменить] Кажется, автор удалил класс SimplePost. Однако тот же автор сделал альтернативу, которая должна помочь, называется SimpleHTTPRequest. Остальные должны оставаться неизменными
Привет, Извините за поздний ответ. На этот способ реализации нужен выделенный веб-сервер. Можете ли вы грубо сказать мне, сколько усилий нужно настроить для этого сервера? Также без установки сервера я не могу попробовать этот подход, я думаю. – Srivathsa
проверить мое редактирование. Короткий ответ был бы: не совсем, вы могли бы сделать это без особых хлопот, но это зависит в основном от того, сколько писем вы отправите. Я использовал этот метод для собственного приложения, где, возможно, в крайних случаях было бы больше, чем несколько десятков писем, отправленных в час, поэтому это не было проблемой. – BBog
Привет, m проверяя свой код, вы хотели бы рассказать мне, что «SimplePost», как используют «NSMutableURLRequest * request = [SimplePost urlencodedRequestWithURL: url» –