2012-10-12 5 views
2

Я вижу, что есть много способов отправить электронную почту в фоновом режиме (без интерфейса) на устройствах iOS и без использования класса MFMailComposeViewController. Самые популярные примеры - заполнить онлайн-форму и нажать кнопку отправки. Вот самые популярные методы, которые я вижу в stackoverflow.Альтернативные способы отправки электронной почты без пользовательского интерфейса от ipad или iphone

(1) Использование собственного SMTP-клиента. Этот подход работает для меня, но в моей частной сети, но не работает в помещениях моей компании, как в сети компании. Мне не разрешено использовать gmail (общедоступные электронные письма) и не имеют SMTP-информации о почтовом сервере нашей компании. Меня здесь поражают таким подходом.

(2) Использование CTCoreMessage & Three20 Framework (с открытым исходным кодом). Но здесь я не могу найти, где скачать эту среду, отличную от git, где моя VLAN VLAN не позволяет GIT. Может ли кто-нибудь помочь мне узнать загружаемое местоположение платформы Three20 Framework и предоставить мне пример кода.

(3) Использование HTTP-почты: отправьте свой почтовый ящик на сервер и делегируйте отправку электронной почты на сервер HTTP. Если это просто, то кто-нибудь может помочь мне настроить собственный HTTP-сервер для отправки электронной почты.

Может кто-нибудь помочь в поиске любого рабочего образца кода. Я нахожусь в конце моей доставки проекта. Отправил это назад. Пока нет ответов. Может ли кто-нибудь мне помочь.

ответ

0

Возможно, я смогу предоставить некоторую помощь для третьего варианта, используя 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. Остальные должны оставаться неизменными

+0

Привет, Извините за поздний ответ. На этот способ реализации нужен выделенный веб-сервер. Можете ли вы грубо сказать мне, сколько усилий нужно настроить для этого сервера? Также без установки сервера я не могу попробовать этот подход, я думаю. – Srivathsa

+0

проверить мое редактирование. Короткий ответ был бы: не совсем, вы могли бы сделать это без особых хлопот, но это зависит в основном от того, сколько писем вы отправите. Я использовал этот метод для собственного приложения, где, возможно, в крайних случаях было бы больше, чем несколько десятков писем, отправленных в час, поэтому это не было проблемой. – BBog

+0

Привет, m проверяя свой код, вы хотели бы рассказать мне, что «SimplePost», как используют «NSMutableURLRequest * request = [SimplePost urlencodedRequestWithURL: url» –

2

Я бы изучил использование Mailgun, это упростит отправку электронных писем и обработает до 10k в месяц бесплатно. Они позволяют использовать их поддомен, если у вас нет собственного, но вы можете легко настроить свои собственные, чтобы работать с ними.

Его так же просто, как установка коко-капода и добавление 5 строк кода или около того.

+0

благодаря сервису AWESOME! – MaKo

 Смежные вопросы

  • Нет связанных вопросов^_^