дополнительные новые строки в текстовых электронных письмах, отправленных через sendgrid

Мы отправляем электронные письма в виде простого текста с PHP, используя CodeIgniter (v1.7), а также PHPMailer (v5.1). Текущая производственная установка использует дешевый ретранслятор SMTP, план состоит в том, чтобы переключиться на CritSend или SendGrid. Сейчас мы тестируем варианты с сервера Rackspace Cloud.

Когда мы используем SendGrid SMTP, все новые строки "\r\n" в emials в конечном итоге удваиваются, поэтому в итоге получается "\r\n\r\n".

Все работает нормально при использовании CritSend SMTP, а также двух других SMTP-серверов.

Техническая поддержка SendGrid не думает, что это как-то связано с их системой, но слышала о другом клиенте с такой же проблемой, и, по-видимому, она была решена путем изменения конфигурации на стороне клиента.

Кто-нибудь испытал это?

Для нас это не критично, так как CritSend работает хорошо и кажется не хуже SendGrid по функциям, поэтому мы будем использовать их. НО, будучи любопытным типом, я просто не могу оставить это :-)

Обычная установка: PHP-скрипт -> sendmail/Postfix -> внешнее реле SMTP -> ....

Чтобы протестировать различные реле SMTP, я меняю конфигурацию постфикса, только SendGrid дает дополнительные символы новой строки, все остальные параметры SMTP работают нормально. Если я сброшу электронное письмо с помощью функции отладки класса электронной почты CodeIgniter, оно выглядит нормально, прежде чем оно перейдет к постфиксу.

Альтернативная установка: PHP-скрипт (либо почтовый класс CI, либо PHPMialer) -> внешний ретранслятор SMTP -> ....

Чтобы протестировать различные ретрансляторы SMTP, я изменяю настройки SMTP в конфигурации электронной почты CI или в конфигурации PHPMialer. Только SendGrid дает дополнительные символы новой строки, все остальные параметры SMTP работают нормально.

Насколько я вижу, вариантов игры не так много. Я пробовал "utf-8" и "ISO-что-то или другое", все новые строки на нашей стороне "\r\n"...... кажется, что где-то очень неясная ошибка.

Любые идеи?


person Adam    schedule 08.06.2011    source источник


Ответы (2)


Хорошо, еще немного экспериментов, и эти настройки заставят простые текстовые электронные письма хорошо проходить через SendGrid из PHPMailer:

    $mailer->CharSet    = "utf-8";
    $mailer->LE         = "\r\n";
    $mailer->Encoding   = "quoted-printable";
    $mailer->WordWrap   = 80;

Часть "quoted-printable" является ключевой.

person Adam    schedule 08.06.2011

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

    // Prepare email
    $email = array(
        'api_user'  => App::emailAPIUser(),
        'api_key'   => App::emailAPIPwd(),
        'to'        => $email,
        'subject'   => 'Thank you for entering ' . App::name(),
        'html'      => $email_body,
        'text'      => '

Thank you for entering Competition. 

You are now in the running to WIN your prices valued at $6000. 

Winners will be notified of their status by the 14th February 2012. 

Good luck!',
        'from'      => '[email protected]'
    );
person Steven de Salas    schedule 15.12.2014