簡體   English   中英

通過 mail() 發送的電子郵件中的 URL 在每個郵件客戶端中不起作用/顯示方式不同

[英]URLs in emails sent via mail() don't work / display differently in every mail client

我通過mail()發送電子郵件,其中包含一個帶有變量的 URL,允許收件人僅查看過濾的內容。

$text_body= "anglebracket_a_href='https://example.com/list.php?var=$variable'">Link anglebracket/a>"

變量存儲在 mysql 數據庫中。 到目前為止一切正常,但 URL 在每個郵件客戶端中的顯示方式不同。

而不是正確的版本:

<br>
https://www.example.com/list.php?var=76733d141

在雷鳥它讀

<br>
tps://www.example.com/list.php?varv733d141*

(https被截斷!和=符號,前2位數字變成av)

在 Webmail 中,它讀取

<br>
https://www.example.com/list.php?varv733d141

在我的 iPhone 郵件應用程序中,它顯示正確,鏈接可點擊且有效!

這些是我的標題:

$recipient = "test@example.com";
$subject="Your Login Data for $var1 at $var2 in $var3";
$text   ="";
$text   .=$text_body;
$sender   = "Test <noreply@example.com>";
$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-Type: text/HTML; charset=ISO-8859-1";
$headers[] = "Content-Transfer-Encoding: quoted-printable";
$headers[] = "From: {$sender}";
$headers[] = "Reply-To: {$sender}";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($recipient, $subject, $text,implode("\r\n",$headers));

嘗試了不同的編碼和定界等等。 我忽略了哪個基本或不那么基本的問題? 謝謝你的幫助!

既然你說你發送的是quoted-printable,你應該正確地編碼它。 =字符在帶引號的可打印編碼中具有特殊含義。 使用quoted_printable_encode()函數對正文進行編碼。

mail($recipient, $subject, quoted_printable_encode($text),implode("\r\n",$headers));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM