我正在使用Laravel 4.2和Mailgun。
mailgun api的基本网址已更改,现在为https://api.mailgun.net/v3/.........
。
当我使用Laravel执行请求时,它看起来像:https://api.mailgun.net/v2/.........
我查看了处理该问题的Facade:
// vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php
/**
* Set the domain being used by the transport.
*
* @param string $domain
* @return void
*/
public function setDomain($domain)
{
$this->url = 'https://api.mailgun.net/v2/'.$domain.'/messages.mime';
return $this->domain = $domain;
}
版本是硬编码的...我怎样才能正确改变?
答案 0 :(得分:0)
Laravel 4.2使用mailgun v2构建。你可以在代码中将v2更改为v3,它可能会起作用,因为mailgun的v3是向后兼容的。 (http://blog.mailgun.com/default-api-version-now-v3/)但这不是最好的解决方案。
您可以使用使用mailgun v3 api的https://github.com/Bogardo/Mailgun之类的外部依赖。
答案 1 :(得分:0)
我建议对带有问题的类的代码进行代码更改,并将其作为拉取请求提交回Laravel的Github。
我同意你的观点,它看起来完全硬编码,除了这样做之外无法改变,所以这似乎是你最好的选择。
要注意的一件事是:我不知道mailgun API,但是如果它从v2变为v3,这意味着对API进行了一些重大更改,所以不要以为你只能改变它将'2'编号为'3'并期望它起作用;您可能还需要更改进行相关API调用的代码。