php
  • html
  • email
  • 2011-08-11 17 views 4 likes 
    4

    這比任何事情都更令人好奇。我的網站上的評論系統會在發佈評論時自動生成一封電子郵件給我。它是批准評論的鏈接,也是拒絕評論的鏈接。時間PHP生成的電子郵件中的不可預知的行爲

    $my_headers = 'MIME-Version: 1.0' . "\n"; 
    
    $my_headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n"; 
    
    $my_headers .= 'From: MYSITE.com <[email protected]>' . "\n"; 
    
        $subject = "Comment Received"; 
    
        $messagei = "Comment from " . addslashes($_POST['commentName']) ." on ".addslashes($title)."." . "<br /><br />" .addslashes($commentCommment); 
    
        $messagei .= "<br /><br /> 
         <strong>OPTIONS:</strong> 
    
        <br /><br /><a href='http://www.MYSITE.com/edit/instaprove.php?Approve=Approve&commentid=".$lastID."'> 
    
        <h2>http://www.MYSITE.com/edit/instaprove.php?Approve=Approve&commentid=".$lastID."</h2> (Approve Comment)</a> 
    
        <br /><br /><br /><a href='http://www.MYSITE.com/edit/instaprove.php?Remove=Remove&commentid=".$lastID."'> 
    
        <h2>http://www.MYSITE.com/edit/instaprove.php?Remove=Remove&commentid=".$lastID."</h2> (Delete Comment)</a>"; 
    
        mail('[email protected]',$subject,$messagei,$my_headers,"[email protected]"); 
    

    99%,它工作得很好,但每過一段時間,而不是正確地產生了審批環節,如

    http://www.mysite.com/edit/instaprove.php?Approve=Approve&commentid=142631

    其與空間產生它在裏面,所以我在電子郵件中得到的鏈接進入

    http://www.mysite.com/edit/instaprove.ph%20p?Approve=Approve&commentid=142631

    奇怪,不是嗎?

    編輯:澄清 - 當發生這種情況時,鏈接正確地寫在電子郵件(.php),但它去的鏈接被打破(.ph p)。

    編輯8/12:它再次發生。鏈接文本是正確的:

    http://www.mysite.com/edit/instaprove.php?Approve=Approve&commentid=142858

    但鏈接呈現爲

    http://www.mysite.com/edit/%20instaprove.php?Approve=Approve&commentid=142858

    所以,當它出現時,神祕的空間顯示在連接不同百分點。

    +2

    不奇怪,但不可能爲那個代碼。 – zerkms

    +0

    我同意你的看法,除了發生這種事情之外,不可能的事情不止一次。 – Dennis

    +1

    考慮到郵件客戶端也傾向於混淆電子郵件的內容:)嘗試在多個郵件客戶端上進行測試......並且,請嘗試在文本文件中記錄電子郵件正文,以便您可以查看發送內容和接收的內容 – Catalin

    回答

    6

    我有空間,也怪了類似的問題「!\ n」在我的電子郵件的來源出現。

    這是因爲很長的線條。在電子郵件的內容中添加一些「\ n」可以解決問題。

    +0

    這是我的賭注。郵件服務器將包裝超過大約1,000個字符的行,並且包裝將看起來像HTML中的空白等。正確包裝您的libes,或對身體部分進行base64編碼。 – tripleee

    +0

    我完全忘記了這個問題 - 事實上,我甚至不再使用這個腳本(我們廢棄了我們的老家釀CMS,轉而使用Joomla,而且我很喜歡它)。但是,當我仍舊修改舊腳本時,那是我找到的解決方案,所以你先生,得到答案。 – Dennis

    +0

    我遇到了同樣的問題,HTML電子郵件中的一個鏈接被破壞,並且分解線條解決了這個問題。 – AndyDunn

    1

    這是很奇怪的..你可能想在URL本身上做一個字符串替換,替換任何沒有字符的空白,因爲它顯然有時候會以某種方式抓取一個隨機的空白。

    str_replace(" ", "", "http://www.MYSITE.com/edit/instaprove.php?Approve=Approve&commentid=12304728") 
    

    這是一個很奇怪的問題。

    我只是想想其他的辦法是字符集更改爲UTF-8

    +0

    正確,但我仍然想知道爲什麼會發生這種情況。 – Dennis

    +0

    是的,這真的很奇怪..既然你在字符串中定義它,而不是將它作爲一個變量或字符串傳遞給它,我不知道爲什麼會發生這種情況..希望我可以提供更有幫助的響應,但它是很荒謬。祝你好運男人 – Atticus

    +0

    只是一個想法 - 如何將charset更改爲utf-8? – Atticus

    相關問題