Email 电子邮件视图内的cakePHP 3链接
我有一个问题,在一个电子邮件视图中建立一个链接,由于某种原因,它不会输出我从控制器传递的URL。。 我传递给视图的URL字符串缺少http://domain 前缀 usersController中的某些操作:Email 电子邮件视图内的cakePHP 3链接,email,cakephp,cakephp-3.0,Email,Cakephp,Cakephp 3.0,我有一个问题,在一个电子邮件视图中建立一个链接,由于某种原因,它不会输出我从控制器传递的URL。。 我传递给视图的URL字符串缺少http://domain 前缀 usersController中的某些操作: $email = new Email(['gmail','transport'=>'gmail']); $email->template('recover', 'default') ->email
$email = new Email(['gmail','transport'=>'gmail']);
$email->template('recover', 'default')
->emailFormat('html')
->viewVars([
'username' => $user['username'],
'url' => '/users/resetpwd/u/'.$user['username'].'/t/'.$user['token']
])
->from(['mailer@domain.com' => 'My Site'])
->to('example@domain.com')
->subject('Password recovery')
->send()
recover.ctp:
<p>Welcome <b><?= $username; ?></b>,<br/>
you requested a password change.<br/>
To set a new password, please: <?php echo $this->Html->link('Click Here', $url, ['_full' => true,'escape' => true]); ?></p>
<?= $this->Html->image('banniere.gif', array('fullBase' => true));?><br/>
<p>This email was sent from <a href="http://cakephp.org">My Site</a></p>
如果您想确保URL始终是完整的,那么适当的解决方案是Router::URL。这样,您甚至可以以数组格式声明URL,而数组格式通常是首选样式,而不会破坏任何东西
use Cake\Routing\Router;
// ...
<?= $this->Html->link('Click Here', Router::url($url, true), ['escape' => true]); ?>
您确定这不是您的电子邮件应用程序/提供商/。。。那会因为什么原因删除URL?send return到底是什么意思?注意,它总是返回一个非空数组,在if语句中使用它是毫无意义的?你是说电子邮件客户端?我测试了3个不同的客户端,结果是一样的:没有生成链接。。在OPI中添加了电子邮件配置。OPI没有要求提供电子邮件配置,而是要求提供send的返回值,该值将显示生成的确切内容,以便人们能够理解实际发生的事情,以及您所指的确切含义。在原始解决方案中,send的返回显示了以下内容:您可以看到它确实缺少了http://domain 我明白了,这与你在qeustion中所说的完全不同,因为它实际上是在输出URL,只是没有以你期望的格式输出。您的问题中应该包含类似的详细信息,以便人们能够正确回答。错误:找不到类“Router”。我遗漏了什么吗?@user3813360路由器类位于Cake\Routing名称空间中。您需要导入它,或者使用完全限定路径。我已经更新了答案,以避免含糊不清。