0

我已经搜索了几个星期的错误 - 终于可以找到它。但是,我需要一些帮助来解决它。上下文是电子邮件地址确认。

根据登录名的字符数,PHP 命令quoted_printable_encode() 在点之前或之后换行,然后换行。

这有效...

Ihre E-Mail-Adresse burninleo@abc.net wurde als Kontaktadresse f=C3=BCr das=
 Benutzerkonto "abcdefg.abcdef" auf https://www.snipsnapme.com eingetragen.

Falls Sie dieses Benutzerkonto selbst eingerichtet haben, best=C3=A4tigen S=
ie Ihre korrekte E-Mail-Adresse bitte, indem Sie auf folgenden Link klicken=

...虽然这是在点之前修剪的。

Ihre E-Mail-Adresse burninleo@abc.net wurde als Kontaktadresse f=C3=BCr das=
 Benutzerkonto "abcdefg.abcdefg" auf https://www.snipsnapme.com eingetragen=
.

Falls Sie dieses Benutzerkonto selbst eingerichtet haben, best=C3=A4tigen S=
ie Ihre korrekte E-Mail-Adresse bitte, indem Sie auf folgenden Link klicken=

据我记得 \n+dot+\n+\n 是“消息结束”的标记 - 所以绝对清楚,为什么在此处修剪消息。但是,用其他东西替换任何 =\ndot\n\n 似乎并不明智,因为quoted_printable_encode() 确实误解了这一点。

有什么我错过的吗?什么?

感谢您的提示!BurninLeo


这是发送到 PHP 的 mail() 的完整消息内容。由于 linux 上的后缀将 \n 替换为 \r\n,因此换行符为 \n。

--=_SubliminalMessagesInCinemaDontWork
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Guten Tag,

Ihre E-Mail-Adresse burninleo@abc.net wurde als Kontaktadresse f=C3=BCr das=
 Benutzerkonto "abcdefg.abcdefg" auf https://www.snipsnapme.com eingetragen=
.

Falls Sie dieses Benutzerkonto selbst eingerichtet haben, best=C3=A4tigen S=
ie Ihre korrekte E-Mail-Adresse bitte, indem Sie auf folgenden Link klicken=
: https://www.snipsnapme.com/admin/act.php?t=3D1234567890ABCDEF

Der Best=C3=A4tigungscode f=C3=BCr Ihre E-Mail-Adresse lautet: 1234567890AB=
CDEF


Falls Sie das Benutzerkonto nicht selbst eingerichtet haben, will m=C3=B6gl=
icherweise eine andere Person Ihre E-Mail-Adresse missbrauchen. In diesem F=
all l=C3=B6schen Sie diese E-Mail bitte einfach.

----------------------------------------------------------
snipsnapme.com - https://www.snipsnapme.com
----------------------------------------------------------
--=_SubliminalMessagesInCinemaDontWork
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<title>Best=C3=A4tigung der E-Mail-Adresse</title>
<style>
body { font-family: verdana, arial, sans-serif }
a.button:link { background-color: #00AA00 }
a.button:visited { background-color: #009900 }
a.button:focus,
a.button:hover,
a.button:active { background-color: #66AA00 }
</style>
</head>
<body>
<p>Guten Tag,</p>
<p>Ihre E-Mail-Adresse <strong>burninleo@abc.net</strong> wurde als Kontakt=
adresse f=C3=BCr
das Benutzerkonto "abcdefg.abcdefg" auf <strong>https://www.snipsnapme.com<=
/strong> eingetragen.</p>
<p>Falls Sie dieses Benutzerkonto selbst eingerichtet haben, best=C3=A4tige=
n Sie
Ihre korrekte E-Mail-Adresse bitte, indem Sie auf folgenden Knopf klicken.<=
/p>
<p style=3D"padding: 20px 0px">
<a href=3D"https://www.snipsnapme.com/admin/act.php?t=3D1234567890ABCDEF" c=
lass=3D"button" style=3D"padding: 10px 20px; margin: 1px; border: 1px solid=
 white; outline: 1px solid #00AA00; background-color: #00AA00; color: #FFFF=
FF; text-decoration: none">E-Mail-Adresse best=C3=A4tigen</a>
</p>
<p>Der Best=C3=A4tigungscode f=C3=BCr Ihre E-Mail-Adresse lautet: 123456789=
ABCDEF</p>
<p>Falls Sie das Benutzerkonto <u>nicht</u> selbst eingerichtet haben,
will m=C3=B6glicherweise eine andere Person Ihre E-Mail-Adresse missbrauche=
n.
In diesem Fall l=C3=B6schen Sie diese E-Mail bitte einfach.</p>
<div style=3D"margin-top: 24px; border-top: 2px solid #999999; border-botto=
m: 2px solid #999999; padding: 8px 0px">
snipsnapme.com &ndash; <a href=3D"https://www.snipsnapme.com">https://www.s=
nipsnapme.com</a>
</div>
</body>
</html>
--=_SubliminalMessagesInCinemaDontWork--
4

1 回答 1

1

您必须在所有仅包含点的行前面加上一个.(点)。

preg_replace('/^(\.+)$/m', '.\1', $mail)

这是传输层的脏器。SMTP 是最可能的罪魁祸首(请参阅邮件功能文档中的警告),但可能还有其他类似行为的低级机制。例如,如果您调整了sendmail_path设置或使用了错误的sendmail程序,您可能会遇到类似的问题。

于 2012-12-19T09:45:05.340 回答