Подтвердить что ты не робот

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

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

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

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. Это, в свою очередь, импортируется PHP cronjob и помещается в базу данных MySQL. Он отображается в папке отправки в моем приложении.

Проблема

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

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

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

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

Короче

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

Update

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

4b9b3361

Ответ 1

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

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

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

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

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

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

$headers = $message->getHeaders();

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

Этот getter, который я поставил, - это то, как я представляю ваш почтовый ящик.

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

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


Обновление:

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

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

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