Проблема с отправкой почты через 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] ([email protected] 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  ([email protected] 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) С чего я могу начать решать эту проблему?

Большое спасибо.


person jac300    schedule 23.05.2014    source источник


Ответы (2)


Отправка электронной почты с помощью SMTP напрямую не помещает электронную почту в папку "Отправленные" провайдера. Вы должны войти в провайдера с IMAP и поместить копию электронной почты в папку «Отправленные» в качестве отдельной операции. Приложения более высокого уровня, такие как почтовое приложение iPhone, обрабатывают эти детали внутри себя.

person Remy Lebeau    schedule 23.05.2014
comment
Просто чтобы добавить к этому ответу, команда APPEND используется для загрузки копии электронного письма в папку «Отправленные» через IMAP. - person Gigi; 23.05.2014
comment
Чтобы добавить еще больше информации: есть несколько систем, которые делают автоматически помещают в ящик отправленных: gmail — одна из них. Хотя это нестандартное поведение. - person Max; 23.05.2014
comment
@Макс: Согласен. Например, GoDaddy НЕ помещает электронное письмо SMTP автоматически в папку «Отправленные». - person Remy Lebeau; 23.05.2014
comment
Спасибо за разъяснения. - person jac300; 24.05.2014

Дополнительная информация:

  1. Он был помещен туда каким-то сервером по пути. Это нестандартный заголовок. Однако он похож на стандартный заголовок SMTP Received.
  2. «xymcookie» — это нестандартный метод аутентификации, используемый Yahoo. Насколько я могу судить, это не задокументировано публично.
  3. No.
  4. Смотрите ответ Реми. Используйте IMAP Append для большинства серверов. Gmail этого не требует, но это нестандартно.
person Max    schedule 23.05.2014
comment
Спасибо, очень полезно. - person jac300; 24.05.2014