SMTP Content-Transfer-Encoding для HTML-писем - PullRequest
0 голосов
/ 29 июня 2018

Есть ли причина, по которой Content-Transfer-Encoding из quoted-printable будет испортить ссылку при отправке с SMTP-сервера?

Пример:

После установки mail from, rcpt to и перехода в режим data отправьте это (электронные письма удалены):

From: Me <me@me.com>
To: You <you@you.com>
Subject: Email Test
Mime-Version: 1.0;
Content-Type: text/html; charset="UTF-8";
Content-Transfer-Encoding: quoted-printable;

<html>
<body>
<a href="https://www.google.com/">Google</a>
</body>
</html>

Затем источник электронной почты каким-то образом облажается, и тег изменяется на <a href=3D"ttps://www.google.com/&quot;">Google</a> (отсутствует h из https).

Если я изменю кодировку на 7bit, тогда все будет нормально.

1 Ответ

0 голосов
/ 29 июня 2018

Для всех, кто случайно сталкивался с этим постом - проблема была простой, но не та, которая была сразу очевидна.

При использовании quoted-printable вы должны убедиться, что вы передаете правильно закодированные данные. Я не был. Я передавал нормальный HTML, думая, что все в порядке.

Так что в моем примере тег <a> должен быть закодирован в <a href=3D"https://www.google.com/">Google</a>, тогда он заработает.

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

// Returns a properly quoted-printable string
func toQuotedPrintable(s *string) error {
    var b bytes.Buffer
    w := quotedprintable.NewWriter(&b)

    _, err := w.Write([]byte(*s))
    if err != nil {
        log.Println("Error while decoding to quoted-printable", err)
        return err
    }

    err = w.Close()
    if err != nil {
        log.Println("Error while decoding to quoted-printable", err)
        return err
    }

    *s = b.String()
    return nil
}
...