Могу ли я программно отправлять электронную почту в приложении для 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)


arrow_upward
12
arrow_downward

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

person jcpennypincher    schedule 15.02.2011

arrow_upward
5
arrow_downward

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

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

person pchap10k    schedule 07.11.2010

arrow_upward
3
arrow_downward

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

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

arrow_upward
1
arrow_downward

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

person IPhoneCrazy    schedule 02.12.2010

arrow_upward
1
arrow_downward

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

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

person Panayot    schedule 22.01.2018

arrow_upward
0
arrow_downward

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

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

person Janco    schedule 07.11.2010

arrow_upward
0
arrow_downward

У меня нет опыта работы с 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

arrow_upward
0
arrow_downward

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

person user756212    schedule 17.08.2011