Yii2 - 生成的电子邮件中输出额外字符

时间:2015-11-04 20:23:29

标签: character-encoding yii2 swiftmailer url-encoding activation

我正在尝试通过电子邮件向新用户发送帐户激活链接。我在Yii2中使用默认邮件程序。我使用视图文件'activation_request_email'生成以下代码来生成电子邮件正文。

$emailMessage = Yii::$app->mailer->compose('activation_request_email', ['userModel' => $this]);

然后在视图文件中,我使用以下代码生成激活链接:

<?= Html::a ('Activation Link', ["site/activation", "key" => $userModel->email_activation_key])?> 

消息发送成功,但生成的电子邮件消息(包括消息中的链接)始终包含一些额外的字符,如“3D”和“=”。如下所示:

<a href=3D"/tbpv2/web/site/acti=vation?key=3DfW_9XM-bdxXDHCTEwPTAPL1wwKGcc3">Activation Link</a>

邮件程序组件的配置为:

'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport' => true,
    ],

消息中生成的html标头的片段如下:

<head> <meta http-equiv=3D"Content-Type" content=3D"text/ht=ml; charset=3DUTF-8" /> <title> Reset Token</title>= </head>

可能是什么原因?

2 个答案:

答案 0 :(得分:0)

你有拼写错误

 <?= Html::a ('Activation Link', ["site/activation", "key" => $userModel->email_activation_key])?>

尝试删除

后的空格
<?= Html::a('Activation Link', ["site/activation", "key" => $userModel->email_activation_key])?>

只是为了检查问题是否与助手功能相关或其他尝试以这种方式回显html代码

<?php echo "<a href='yuor_site..../site/activation?key=" .     
      $userModel->email_activation_key . "'>Activation link</a"; ?>

并测试结果

然后尝试这种方式

$activationLink = Yii::$app->urlManager->createAbsoluteUrl(['site/activation', 'key' => model->email_activation_key]);


<?= Html::a(Html::encode($activationLink), $activationLink) ?>

答案 1 :(得分:0)

=3D是由编码 Quoted-printable 引起的=的替代品。这绝对有效。请参阅Wikipedia和此github issue

百科:

  

Quoted-Printable或QP编码是使用可打印ASCII的编码   字符(字母数字和等号=)传输8位数据   在7位数据路径上,或者通常在非8位的介质上   清洁。它被定义为用于的MIME内容传输编码   的电子邮件