2014-09-28 45 views
-1

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

回答

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 
    */