为什么Yii在创建URL时会为电子邮件地址添加额外的句点

时间:2014-03-21 00:00:21

标签: php yii

enter image description here

如何在Yii中实现,框架为url添加了2个点获取参数O_o 这是代码:

<strong>
<?php 
echo $mails;
?>
<p>
    Добро пожаловать в интернет-магазин <?php echo Yii::app()->params['nameProject'].", ".$name; ?>
    <p>Для продолжения регистрации подтвердите свой электронный адрес - <a href="<?php echo Yii::app()->createAbsoluteUrl('site/verification', array('code' => $md5, 'mail' => $mails));?>">Подтвердить</a></p>
    <p>
        С уважением и пожеланием успехов, команда <?php echo Yii::app()->params['nameProject']; ?>!
    </p>
</p>
</strong>

UPDATE1:接听评论

  

块引用

当然,我是atach照片和代码,你可以看到,我是打印$邮件= arthur952010@gmal.com,所以你也可以看到url parametr arthur952010@gmal..com。哪里出现两个点?当我打电话<?php echo Yii::app()->createAbsoluteUrl('site/verification', array('code' => $md5, 'mail' => $mails));?>

时,需要成为一个

2 个答案:

答案 0 :(得分:1)

URL手动编码电子邮件地址:

<a href="<?= Yii::app()->createAbsoluteUrl(
    'site/verification', array('code' => $md5));
    ?>&mail=<?= urlencode($mails) ?>">Подтвердить</a>

答案 1 :(得分:0)

问题不在于Yii,而是由于swiftmailer(yii的默认电子邮件库)与电子邮件堆栈中的其他组件(如postfix或nullmailer)之间的沟通错误。

SMTP协议指定以句点开头的行具有特殊含义。要解决此问题,默认情况下,nullmailer会转义以带有额外句点的句点开头的行。但是,用于实际发送电子邮件的传输可能会完全相同,导致周期被转义两次,从而导致最终结果出现双倍期。

使用此配置为swiftmailer修复了它:

'mailer'        => [
    'class'     => 'yii\swiftmailer\Mailer',
    'transport' => [
        'class'     => 'Swift_SendmailTransport',
        'command'   => '/usr/sbin/sendmail -t -i'
    ]
],

参考文献: