Правильные заголовки для ответа и пересылки писем

Вы тот программист, который знает все об электронной почте? Можете ли вы мечтать о заголовках писем, писать их с закрытыми глазами? Может быть, вы сможете помочь мне с этим вопросом.

Позволь мне объяснить …

Workflow

  • Почтовый сервер получает электронные письма
  • PHP cronjob импортирует все электронные письма из IMAP в базу данных MySQL
  • Пользователь находит все электронные письма в Inbox в моем приложении

Отправка электронной почты

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

$message = \Swift_Message::newInstance()
->setSubject($form->get('subject')->getData())
->setFrom('[email protected]')
->setTo($form->get('to'))
->setBody(
$this->renderView(
'MailBundle:Email:contact.html.twig',
array(
'ip' => $request->getClientIp(),
'name' => $form->get('to')->getData(),
'message' => $form->get('message')->getData()
)
)
)
;

Это отлично работает. Если вышеуказанное письмо отправлено, я создаю новое письмо в папке отправленных IMAP. Это, в свою очередь, импортируется cronjob PHP и помещается в базу данных MySQL. Он отображается в папке отправленных в моем приложении.

Проблема

Теперь, когда у вас есть общее представление о том, как работает мое приложение, у меня есть некоторые вещи, в которых я не очень уверен.

  • Как я могу создавать ответы на импортированные письма, используя SwiftMailer.
  • Как я могу пересылать импортированные письма с помощью SwiftMailer

Я хотел бы использовать свое приложение в качестве реального почтового клиента и хочу, чтобы заголовки почты и т. Д. Были правильно установлены.

Я мог бы, конечно, просто отправить электронное письмо с оригинальным почтовым телом и темой с добавлением «RE:». Но я не уверен, что это все. Я почему-то подозреваю, что мне нужно сделать больше.

Короче

Как бы я использовал SwiftMailer, чтобы ответить или переслать письмо, сохраненное в базе данных?

Обновить

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

13

Решение

Я сравнил разницу между «первым» письмом и ответом.

Чтобы ответить, кажется, вам нужно добавить две строки в заголовок ответа:

  • In-Reply-To: [Message-ID] (с идентификатором сообщения, найденным в заголовке первого письма)

  • Рекомендации: [Message-ID]

Очевидно, вы должны изменить from а также to в ответном письме. (Я думаю, что SwiftMailer сам создает другие)

Чтобы добавить строку в заголовок электронного письма с помощью SwiftMailer, выполните следующие действия:

$headers = $message->getHeaders();

$headers->addTextHeader('In-Reply-To', $previousEmail->getHeaders()->getMessageId());

Этот получатель, который я поставил, — это просто то, как я представляю вашу электронную почту.

Для пересылки просто распечатайте источник электронного письма и проверьте различия.

Надеюсь, это может помочь.


Обновить :

Для форварда: это одно и то же. Я просто сравнил два заголовка.

Вы должны добавить In-Reply-To а также References,

И чтобы ответить на ваше обновление: вы можете поместить все, что вы хотите (очевидно, строка) в заголовок электронной почты. Оценка спама не будет расти, если вы добавите в нее неизвестную переменную.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]