【问题标题】:Long e-mail link sent by PHP mailer gets brokenPHP 邮件程序发送的长电子邮件链接被破坏
【发布时间】:2014-11-22 21:31:50
【问题描述】:

我需要使用 PHP 发送一个很长的链接。已知问题:链接被电子邮件客户端破坏。我已经尝试过使用纯文本/文本或 html 邮件,我将 url 放在括号 () 中,就像其他线程中建议的那样 - 没有任何帮助。我知道 url 缩短器和用数据库解决这个问题的可能性,但是!!!可以发送数百个字符的链接;例如Ebay 有,亚马逊有……从 stackoverflow 确认注册的链接包含超过 250 个字符,所以?!查看这些邮件的源代码,默认情况下,所有行都在 76 个字符后换行。我尝试对 PHP 自动换行做同样的事情。结果;源代码看起来相同,但我的链接坏了,他们的链接没有!有任何想法吗?我会很高兴得到帮助,因为这让我很困扰!!!! :)

【问题讨论】:

    标签: php email url hyperlink long-integer


    【解决方案1】:

    我可以自己解决问题。首先,必须对链接的特殊字符进行编码(例如,Thunderbird 现在会像这样接受编码的链接)。其次,在 76 个字符后默认设置换行符。为了避免链接被破坏或不再被客户端程序识别为链接,每一行都需要以“=”结尾才能重新组合...

        <?php
    
        $url = 'http://domainxy.com/index.php';
    
        $ending = '?var1=gsgsdgsfgdhfjfgj&var2=sdferewerwrr&var3=jghjghjkloozzzz&var4=ghajsldahskhdhriehfsjndfnjnjjfnjsnjdfhksö&var5=öäüöü';
        $ending = utf8_encode($ending);
        $ending = rawurlencode($ending);
    
        $link = wordwrap( $url . $ending, 75, "=<br />\n", true );
    
        echo $link;
    
        ?>
    
        /* 
        Encodes and devides the link like this:
        http://domainxy.com/index.php%3Fvar1%3Dgsgsdgsfgdhfjfgj%26var2%3Dsdferewerw=
        rr%26var3%3Djghjghjkloozzzz%26var4%3Dghajsldahskhdhriehfsjndfnjnjjfnjsnjdfh=
        ks%C3%B6%26var5%3D%C3%B6%C3%A4%C3%BC%C3%B6%C3%BC
        */ 
    

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2015-11-18
      • 2012-02-04
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 2018-05-10
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多