Могу ли я программно отправлять электронную почту в приложении для iPhone?

Мне нужно иметь возможность программно отправлять предварительно отформатированное электронное письмо или текстовое SMS-сообщение из приложения для iphone. Можно ли это сделать? Я посмотрел на класс Apple MFMailComposeViewController, но он «предоставляет стандартный интерфейс, который управляет редактированием и отправкой сообщения электронной почты», а класс MFMessageComposeViewController также имеет собственный «стандартный системный интерфейс для составления текстовых SMS-сообщений». Это позволяет вам предоставить пользователю интерфейс, в котором он должен заполнить все данные, а затем явно нажать кнопку отправки.

Я не могу использовать эту стандартную функциональность.

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

Кто-нибудь нашел решение этого?


person jcpennypincher    schedule 07.11.2010    source источник
comment
См. этот ответ на [How могу ли я отправлять почту из приложения iPhone] (stackoverflow.com/questions/310946/).   -  person Matthew Flaschen    schedule 07.11.2010


Ответы (8)


После долгих исследований я обнаружил, что отправка электронных писем программно, без вмешательства пользователя, из приложения iphone, не может быть реализована с использованием каких-либо фреймворков Apple.

person jcpennypincher    schedule 15.02.2011

Настройте веб-службу, в которую вы можете отправлять сообщения с помощью HTTP-запроса. Если вы отправляете сообщение только на один адрес, это может сработать очень хорошо, хотя вы можете попросить пользователя ввести свой обратный адрес электронной почты.

В противном случае доступен только стандартный диалог (это зависит от использования той учетной записи, которую они установили на устройстве).

person pchap10k    schedule 07.11.2010

Вот несколько SMTP API, которые работают в OS X. Они также могут работать в iOS.

  • Пантомима
  • MailCore
  • EdMessage
person Dylan Lukes    schedule 07.11.2010

Возможно только через веб-интерфейс, вы не можете скрыть интерфейс, это в соответствии с рекомендациями Apple для разработчиков и в соответствии с документацией.

person IPhoneCrazy    schedule 02.12.2010

В поисках решения такой проблемы я нашел здесь кое-что интересное: Как отправлять почту из приложения iphone без отображения MFMailComposeViewController?

Надеюсь, это будет полезно!

person Panayot    schedule 22.01.2018

Это стандартно невозможно. Если вы не можете использовать стандартный диалог, вам необходимо использовать SMTP.

SMS то же самое, используйте диалог использования веб-службы sms (большинство из них стоит денег).

person Janco    schedule 07.11.2010

У меня нет опыта работы с iOS, но у меня достаточно опыта работы с протоколами электронной почты, чтобы сказать, что я был бы очень удивлен, если бы клиентское приложение могло отправлять электронную почту без доступа к серверу. Скорее всего, электронное письмо будет отправлено с использованием протокола SMTP и, следовательно, должно быть отправлено с использованием SMTP-сервера. Выбор способа подключения к этому серверу - это почти единственный вариант, который у вас есть. Вы можете подключиться к серверному скрипту (например, php) для генерации и отправки электронного письма, или вы можете создать сокет и подключиться напрямую к порту 25 на SMTP-сервере и по-прежнему генерировать электронное письмо из клиентского приложения.

Проверить:

person Aaron    schedule 07.11.2010
comment
Вопрос ничего не говорит о неиспользовании сервера. - person Matthew Flaschen; 08.11.2010
comment
Мне нужно отправить предварительно отформатированное электронное письмо ... программно из приложения iphone. Можно ли это сделать? Возможно, я читаю это слишком буквально, но похоже, что он хочет, чтобы приложение было тем, что действительно отправляет сообщение. - person Aaron; 08.11.2010
comment
Верно, это приложение для iphone, работающее на iOS4, и ему нужно отправить сообщение. Это не может включать в себя настройку сервера или программирования сокетов на другой машине. Однако телефон уже настроен для отправки как электронных писем, так и текстовых SMS-сообщений, поэтому есть стандартный почтовый сервер, уже настроенный провайдером. Вопрос в том, как можно отправить сообщение, при этом пользователю не нужно ничего вводить? Получателя, тему и текст сообщения электронной почты можно указать заранее, но как его отправить? ... программно. - person jcpennypincher; 08.11.2010
comment
@jc, вы должны использовать сервер, но вам не нужно настраивать свой собственный. Как только вы знаете имя хоста SMTP, пользователя и пароль, вы можете использовать любую библиотеку SMTP, включая ту, которую я указал выше. О низкоуровневом коде сокета позаботится библиотека. - person Matthew Flaschen; 08.11.2010
comment
Спасибо за ответ, Мэтью. Я собираюсь попробовать библиотеку skpsmtpmessage, расположенную здесь code.google.com/p/skpsmtpmessage и Я выложу свой результат. Похоже, именно то, что мне нужно. - person jcpennypincher; 08.11.2010

Вы всегда можете использовать Telnet низкого уровня с использованием протокола SMTP для известного почтового сервера для отправки сообщения. Я не знаю, отклонит ли Apple приложение, но SMTP чертовски прост.

person user756212    schedule 17.08.2011