Вы тот программист, который знает все об электронной почте? Можете ли вы мечтать о заголовках писем, писать их с закрытыми глазами? Может быть, вы сможете помочь мне с этим вопросом.
Позволь мне объяснить …
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. Он отображается в папке отправленных в моем приложении.
Теперь, когда у вас есть общее представление о том, как работает мое приложение, у меня есть некоторые вещи, в которых я не очень уверен.
Я хотел бы использовать свое приложение в качестве реального почтового клиента и хочу, чтобы заголовки почты и т. Д. Были правильно установлены.
Я мог бы, конечно, просто отправить электронное письмо с оригинальным почтовым телом и темой с добавлением «RE:». Но я не уверен, что это все. Я почему-то подозреваю, что мне нужно сделать больше.
Как бы я использовал SwiftMailer, чтобы ответить или переслать письмо, сохраненное в базе данных?
Я реализовал заголовки ответа, как предложено в ответе на этот вопрос. Однако я не уверен, будет ли это работать и для пересылки. Я просто хочу убедиться, что почтовые провайдеры не будут блокировать мои электронные письма, потому что заголовки неверны.
Я сравнил разницу между «первым» письмом и ответом.
Чтобы ответить, кажется, вам нужно добавить две строки в заголовок ответа:
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
,
И чтобы ответить на ваше обновление: вы можете поместить все, что вы хотите (очевидно, строка) в заголовок электронной почты. Оценка спама не будет расти, если вы добавите в нее неизвестную переменную.
Других решений пока нет …