PHPmailer发送的长电子邮件链接被破坏了

时间:2014-09-28 10:11:45

标签: php email url hyperlink long-integer

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

1 个答案:

答案 0 :(得分:0)

我可以自己解决问题。首先,必须对链接的特殊字符进行编码(例如,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
    */