Проблема отправки почты через SMTP
Мое приложение iOS использует Mailcore для доступа к учетной записи электронной почты пользователя. Отправка и получение осуществляется через SMTP и IMAP, и оба процесса работают как положено для Gmail и Outlook (оба используют OAuth для входа в систему).
Я только что добавил Yahoo (а также некоторых других провайдеров в приложение, которые не используют OAuth), и для всех этих провайдеров у меня возникла проблема именно с отправкой сообщений.
Проблема заключается в том, что, хотя сообщения МОГУТ успешно отправляться из моего приложения, они не отображаются в отправленной папке в Интернете для провайдера.
Например, если я войду в свою учетную запись Yahoo в своем приложении и отправлю сообщение в свою учетную запись Gmail, сообщение появится в моей папке входящих сообщений Gmail в Интернете, но не в моем ящике отправки Yahoo в Интернете.
Я попытался добавить Yahoo в обычное почтовое приложение на iPhone и отправить сообщение с этого аккаунта - это работало нормально - в сообщении отображается окно отправки Yahoo в Интернете. Затем я сравнил заголовки двух сообщений (отправленного из почтового приложения и отправленного из моего приложения), и единственное очевидное отличие, которое я вижу, заключается в строке "X-Rocket-Received":
Почтовое приложение:
X-Rocket-Received: from [11.180.250.219] (userName@71.208.72.234 with xymcookie [216.39.61.254])
by smtp203.mail.ne1.yahoo.com with SMTP; 23 May 2014 08:19:54 -0700 PDT
Мое приложение:
X-Rocket-Received: from (userName@118.41.27.139 with plain [98.138.105.21])
by smtp214.mail.ne1.yahoo.com with SMTP; 23 May 2014 08:58:29 -0700 PDT
Может ли кто-нибудь ответить на любой из следующих вопросов для меня:
1) Что означает X-Rocket-Received?
2) Каково значение "с xymcookie" против "с равниной"?
3) Вероятно, моя проблема связана с тем, что у меня нет xymcookie?
4) Где я могу начать решать эту проблему?
Большое спасибо.
2 ответа
При отправке электронной почты напрямую через SMTP электронная почта не помещается в папку "Отправленные". Вы должны войти в провайдера с помощью IMAP и поместить копию сообщения электронной почты в папку "Отправленные" в качестве отдельной операции. Приложения более высокого уровня, такие как почтовое приложение iPhone, обрабатывают эти детали внутренне.
Дополнительная информация:
- Он был размещен там каким-то сервером по пути. Это нестандартный заголовок. Это похоже на стандартный заголовок полученного SMTP.
- "xymcookie" - это нестандартный метод аутентификации, используемый Yahoo. Насколько я могу судить, публично это не документировано.
- Нет.
- Смотрите ответ Реми. Используйте IMAP Append для большинства серверов. Gmail не требует этого, но это нестандартно.