doushi7394 2016-11-07 20:11
浏览 33
已采纳

在托管服务器上使用PHP发送邮件时,在长URL中添加了空格

I am sending a mail in PHP. This mail contains a long URL. If I send this mail from my website running in localhost I receive it with a valid URL. But if I send the same mail from my website running in hosting server I receive it with a corrupted URL: a space (%20) is added in the middle of the URL.

Here is a sample code I am executing either in localhost or in hosting server:

$body = "<table style='width:100%; border-collapse:collapse'><thead><tr style='background:blue; color:white;'><td style='padding:0.5em; font-size:2em;'>Test</td><td style='padding:1em; text-align:right'>Test</td></tr></thead><tbody><tr><td colspan='2'> this is a test this is a test this is a test </td></tr><tr><td><br/></td></tr><tr><td colspan='2'><p>Click <a href='http://www.test.com/test.php?url_parameter_test_1=url_parameter_test_1&url_parameter_test_2=url_parameter_test_2&url_parameter_test_3=url_parameter_test_3&url_parameter_test_4=url_parameter_test_4&url_parameter_test_5=url_parameter_test_5&url_parameter_test_6=url_parameter_test_6&url_parameter_test_7=url_parameter_test_7&url_parameter_test_8=url_parameter_test_8&url_parameter_test_9=url_parameter_test_9&url_parameter_test_10=url_parameter_test_10&url_parameter_test_11=url_parameter_test_11&url_parameter_test_12=url_parameter_test_12&url_parameter_test_13=url_parameter_test_13&url_parameter_test_14=url_parameter_test_14&url_parameter_test_15=url_parameter_test_15&url_parameter_test_16=url_parameter_test_16&url_parameter_test_17=url_parameter_test_17&url_parameter_test_18=url_parameter_test_18&url_parameter_test_19=url_parameter_test_19&url_parameter_test_20=url_parameter_test_20&url_parameter_test_21=url_parameter_test_21'>here</a></p></td></tr></tbody></table>";
$boundary = uniqid('mf');
$header = "MIME-Version: 1.0
";
$header .= "From: Test <test@mail.com>
";
$header .= "Content-Type: multipart/alternative;boundary=".$boundary."
";
$message = "

--".$boundary."
";
$message .= "Content-type: text/html;charset=UTF-8

";
$message .= $body;
$message .= "

--".$boundary."--";
mail("my_mail@mail.com", "test", $message, $header);

And here is the URL I receive in my mail when executed from hosting server (contains a %20 in parameter 15): http://www.test.com/test.php?url_parameter_test_1=url_parameter_test_1&url_parameter_test_2=url_parameter_test_2&url_parameter_test_3=url_parameter_test_3&url_parameter_test_4=url_parameter_test_4&url_parameter_test_5=url_parameter_test_5&url_parameter_test_6=url_parameter_test_6&url_parameter_test_7=url_parameter_test_7&url_parameter_test_8=url_parameter_test_8&url_parameter_test_9=url_parameter_test_9&url_parameter_test_10=url_parameter_test_10&url_parameter_test_11=url_parameter_test_11&url_parameter_test_12=url_parameter_test_12&url_parameter_test_13=url_parameter_test_13&url_parameter_test_14=url_parameter_test_14&url%20_parameter_test_15=url_parameter_test_15&url_parameter_test_16=url_parameter_test_16&url_parameter_test_17=url_parameter_test_17&url_parameter_test_18=url_parameter_test_18&url_parameter_test_19=url_parameter_test_19&url_parameter_test_20=url_parameter_test_20&url_parameter_test_21=url_parameter_test_21

Do you have any idea why the URL could be corrupted and what I could do to fix it ?

Thanks !

  • 写回答

1条回答 默认 最新

  • doubu0897 2016-11-08 18:40
    关注

    I finally find the solution in another stackoverflow post : [Problems with spaces in php mails

    $body = "<table style='width:100%; border-collapse:collapse'><thead><tr style='background:blue; color:white;'><td style='padding:0.5em; font-size:2em;'>Test</td><td style='padding:1em; text-align:right'>Test</td></tr></thead><tbody><tr><td><br/></td></tr><tr><td colspan='2'> this is a test this is a test this is a test </td></tr><tr><td><br/></td></tr><tr><td colspan='2'><p style='font-size:110%;'>Click <a href='http://www.test.com/test.php?url_parameter_test_1=url_parameter_test_1&url_parameter_test_2=url_parameter_test_2&url_parameter_test_3=url_parameter_test_3&url_parameter_test_4=url_parameter_test_4&url_parameter_test_5=url_parameter_test_5&url_parameter_test_6=url_parameter_test_6&url_parameter_test_7=url_parameter_test_7&url_parameter_test_8=url_parameter_test_8&url_parameter_test_9=url_parameter_test_9&url_parameter_test_10=url_parameter_test_10&url_parameter_test_11=url_parameter_test_11&url_parameter_test_12=url_parameter_test_12&url_parameter_test_13=url_parameter_test_13&url_parameter_test_14=url_parameter_test_14&url_parameter_test_15=url_parameter_test_15&url_parameter_test_16=url_parameter_test_16&url_parameter_test_17=url_parameter_test_17&url_parameter_test_18=url_parameter_test_18&url_parameter_test_19=url_parameter_test_19'>here</a></p></td></tr><tr><td><br/></td></tr></tbody></table>";
    $boundary = uniqid('mf');
    $header = "MIME-Version: 1.0
    ";
    $header .= "From: Test <test@mail.com>
    ";
    $header .= "Content-Type: multipart/alternative;boundary=".$boundary."
    ";
    $message = "
    
    --".$boundary."
    ";
    $message .= "Content-type: text/html;charset=UTF-8
    ";
    $message .= "Content-Transfer-Encoding: base64
    
    ";
    $message .= chunk_split(base64_encode($body));
    mail("my_mail@mail.com", "test", $message, $header);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么