我正在尝试通过电子邮件向新用户发送帐户激活链接。我在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>
可能是什么原因?
答案 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内容传输编码 的电子邮件强>