Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 电子邮件视图内的cakePHP 3链接_Email_Cakephp_Cakephp 3.0 - Fatal编程技术网

Email 电子邮件视图内的cakePHP 3链接

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

我有一个问题,在一个电子邮件视图中建立一个链接,由于某种原因,它不会输出我从控制器传递的URL。。 我传递给视图的URL字符串缺少http://domain 前缀

usersController中的某些操作:

           $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名称空间中。您需要导入它,或者使用完全限定路径。我已经更新了答案,以避免含糊不清。