【发布时间】:2016-02-05 12:07:48
【问题描述】:
我正在尝试通过电子邮件向新用户发送帐户激活链接。我在 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>
可能是什么原因?
【问题讨论】:
-
使用
useFileTransport = true表示您没有将邮件发送到真实的电子邮件地址。 -
您确定代码中的
href部分没问题吗?似乎3D之前的引用不应该在那里,加上链接 -acti=vation似乎很奇怪。 -
@Joe 是的,“3D”和“=”字符在生成的消息中任意出现。
-
你使用
i18n吗?你的urlManager配置是什么? -
@Joe urlManager 配置:'showScriptName' => false, 'enablePrettyUrl' => true
标签: character-encoding yii2 swiftmailer url-encoding activation