【发布时间】:2015-01-12 19:01:39
【问题描述】:
我想在使用 CakePHP 框架发送的正文电子邮件中添加应用程序链接, 不幸的是,所有链接都是用 localhost 生成的,所以我在配置文件中设置了“App.fullBaseUrl”参数。 但是我发现在配置文件中硬编码域名是不正确的。
是否有任何其他使用 cakePHP 的解决方案可以在电子邮件中添加带有域名的链接,而无需对域进行硬编码?
提前致谢,
【问题讨论】:
我想在使用 CakePHP 框架发送的正文电子邮件中添加应用程序链接, 不幸的是,所有链接都是用 localhost 生成的,所以我在配置文件中设置了“App.fullBaseUrl”参数。 但是我发现在配置文件中硬编码域名是不正确的。
是否有任何其他使用 cakePHP 的解决方案可以在电子邮件中添加带有域名的链接,而无需对域进行硬编码?
提前致谢,
【问题讨论】:
阅读整页,而不仅仅是前几段。您已经链接了正确的页面in your comment。
http://book.cakephp.org/2.0/en/console-and-shells.html#routing-in-shells-cli
在命令行界面 (CLI) 中,特别是您的 shell 和任务中, env('HTTP_HOST') 和其他浏览器特定的环境变量 没有设置。
如果您使用 Router::url() 生成报告或发送电子邮件 那些将包含默认主机
http://localhost/,因此 导致无效的 URL。在这种情况下,您需要指定域 手动。您可以使用配置值 App.fullBaseURL 来做到这一点 例如,来自您的引导程序或配置。对于发送电子邮件,您应该向主机提供 CakeEmail 类 您要发送电子邮件:
$Email = new CakeEmail(); $Email->domain(‘www.example.org’);这个 断言生成的消息 ID 是有效的并且适合域 电子邮件是从那里发送的。
【讨论】:
我觉得你可以用Router::url('/', true);
希望对你有帮助!
【讨论】:
你可以简单地写 -
echo $this->Html->link('Click Here', array('controller' => 'your-controller', 'action' => 'your-action'), array('fullBase' => true));
在您的电子邮件模板页面上。
【讨论】: