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

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

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

Workflow

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

Отправка сообщения электронной почты

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

 $message = \Swift_Message::newInstance() ->setSubject($form->get('subject')->getData()) ->setFrom('me@example.com') ->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. Это, в свою очередь, импортируется PHP cronjob и помещается в базу данных MySQL. Он отображается в папке отправления в моем приложении.

Проблема

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

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

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

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

Вкратце

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

Обновить

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

Solutions Collecting From Web of "Правильные заголовки для отправки и отправки электронных писем"

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

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

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

  • Ссылки: [Message-ID]

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

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

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

Этот геттер, который я поставил, – это то, как я представляю ваш объект электронной почты.

Для форварда, juste распечатайте источник письма и проверьте различия.

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


Обновить :

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

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

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