Электронные письма иногда скремблированы

Люди,

У меня есть основанный на PHP сайт (использующий платформу QCubed); как часть сайта, у меня есть демон, это посылает несколько тысяч электронных писем в день (не, я не спаммер, все, подписываются :)). Электронные письма посланы через пользовательский компонент платформы; тот компонент служит клиентом SMTP. Я использую заплаченный шлюз SMTP из DNSExit.com для поставления электронных писем на самом деле.

Те электронные письма являются простыми Основанными на HTML электронными письмами; у них действительно есть просто простые ссылки внутри.

Моя проблема то, что эти ссылки иногда (не последовательно!) скремблированы во время перехода. Теги так или иначе перепутаны, и некоторые ссылки нефункциональны в электронном письме. Проблема происходит на небольшом проценте всех посланных электронных писем; это не последовательно (т.е. тот же точный источник обмениваются сообщениями, HTML может или не может вызвать скремблирование в переходе).

Какой-либо из Вас видел это? Какие-либо мысли о том, как диагностировать?

6
задан Alex Weinstein 22 March 2010 в 16:26
поделиться

6 ответов

Было 2 проблемы с данными электронной почты - обычно "?" символ каким-то образом попал в некоторые слова, другой был связан с UTF и заголовком. Первое было «исправлено» путем смены хостинг-провайдера (так что это было связано с почтовым сервером), второе было исправлено путем изменения библиотеки PHPmailer.

Попробуйте указать, как именно шифруются данные.

0
ответ дан 17 December 2019 в 02:27
поделиться

Возможно ли, что вы используете временные файлы для создания электронных писем (или, как минимум, для создания переменного содержания)? Я когда-то делал нечто похожее. Текст электронного письма был сгенерирован и записан во временный файл на основе точного времени в секундах. К сожалению, при отправке тысяч в день мы несколько раз попадали в одну и ту же секунду (поскольку доступно всего 86 тыс. Секунд). Это могло бы объяснить а) небольшую частоту ошибок и б) очевидную случайность. Для устранения неполадок я бы просто посмотрел, увеличивается ли частота ошибок с количеством писем, и перейду оттуда.

3
ответ дан 17 December 2019 в 02:27
поделиться

Есть ли у вас специальные атрибуты в ваших ссылках? Может быть, атрибут title с нераскрытыми кавычками внутри?

Что-то вроде этого: Ссылка

0
ответ дан 17 December 2019 в 02:27
поделиться

Когда вы отправляете электронное письмо, вы должны кодировать его так, чтобы длина каждой строки в теле сообщения не превышала 76 символов. Для этого можно использовать base64, но в большинстве систем используется кодировка для печати в кавычках для текста, поскольку она генерирует сообщения меньшего размера. Base64 обычно используется только для двоичных данных.

1
ответ дан 17 December 2019 в 02:27
поделиться

Проблема в том, что HTML несовместим с электронной почтой. Вот почему я создал Язык разметки почты .

HTML был создан для работы с протоколом HTTP, поскольку эти две технологии были изобретены одним и тем же человеком примерно в одно и то же время. Разница в том, что HTTP - это односторонняя передача одного сеанса от сервера к клиенту. Это никогда не меняется, поскольку документ HTML всегда создается на сервере, отправляется запрашивающему клиенту, а после завершения передачи соединение между клиентом и сервером разрывается.

Электронная почта не ведет себя подобным образом. В электронной почте сообщение исходит от клиента, отправляется на одну или несколько почтовых служб, а затем завершается на удаленном клиенте. Однако самое большое различие состоит в том, что документ не умирает с окончанием единственного экземпляра передачи, как в случае передачи документа по HTTP. На документ, отправленный по SMTP, можно ответить, переслать или скопировать нескольким незапрошенным пользователям. Это одно существенное различие, когда рассматривается вопрос о цепочке писем.

Проблема в том, что SMTP и HTTP отличаются, как показано в двух предыдущих абзацах. Эти различия усугубляются тем, что SMTP и HTTP имеют радикально разные методы форматирования для создания данных заголовка. HTML имеет данные заголовка, которые предназначены для совместимости с заголовками передач HTTP и не обеспечивают совместимости с передачами SMTP. Заголовки HTML также не учитывают сложность цепочки писем.

Проблема иллюстрируется, когда программное обеспечение электронной почты искажает документ HTML, чтобы добавить изменения форматирования, необходимые для соответствия требованиям этого программного обеспечения, а также для записи данных заголовка непосредственно в документ. Этот пример становится чрезвычайно явным, когда электронное письмо в формате HTML становится цепочкой электронной почты. Поскольку данные заголовка HTML не имеют метода учета сложности цепочки сообщений электронной почты, невозможно предоставить соответствующие определения представления из таблицы стилей, которые сохранятся при передаче документа. Каждый раз, когда документ HTML или документ с форматированием HTML отправляется из одного почтового программного обеспечения в другое, документ повреждается, и каждое программное обеспечение электронной почты повреждает предыдущее повреждение. Программное обеспечение для обработки электронной почты может относиться либо к почтовому клиенту, который обязательно повредит документ, либо к почтовому серверу, который может только испортить документ электронной почты.

Решение проблемы состоит в том, чтобы создать соглашение о языке разметки, которое напрямую распознает требования к данным заголовка электронной почты. Эти требования определены в RFC 5321 для протокола SMTP и RFC 5322 для клиентской обработки. Единственный способ правильно расширить это решение, чтобы учесть сложность потока электронной почты, - это предоставить соглашение для многоагентной DOM.

Пункты удалены из-за технической неточности и разницы между термином «многоагентная DOM» и природой придуманной функции, не упомянутой здесь даже до редактирования.

РЕДАКТИРОВАТЬ: многоагентная DOM применяет некоторую степень иерархии, которая может быть необязательной для представления цепочки сообщений электронной почты.

1
ответ дан 17 December 2019 в 02:27
поделиться

Я столкнулся с аналогичной проблемой на сервере, на котором запущена sendmail.

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

Отправив письмо самому себе, я открыл его и был сбит с толку, когда увидел, что некоторые из css и html не отображаются правильно, в то время как мои предыдущие электронные письма до моего регулярного выражения были. Посмотрев на исходное сообщение, я заметил, что время от времени восклицательный знак (!) Появлялся, по-видимому, случайным образом во всем сообщении, что нарушало любые css и html, которые попадали на его случайный путь.

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

Почему не было просто выбрано пробел между словами для переноса строки? Зачем вставлять восклицательный знак? Вопросы, боюсь, без ответов.

Мое решение?

sudo apt-get remove sendmail
sudo apt-get install exim4

У меня были другие проблемы с sendmail, например, отправка электронного письма занимала полные 60 секунд, а exim4 просто работал, и мне больше никогда не приходилось об этом думать.

Если ваш почтовый сервер использует sendmail, это вполне может быть проблемой, если нет, спасибо, что позволили мне поделиться с вами моей историей. Мне нужно было дать выход.

1
ответ дан 17 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: