mailgun, guzzle curl 错误
mailgun, guzzle curl error
我在尝试使用 mailgun 附加文件时遇到此错误。
Fatal error: Uncaught exception 'Guzzle\Http\Exception\CurlException' with message '[curl] 26: couldn't open file "zzz.txt" [url] https://api.mailgun.net/v2/sandbox8df78f0cdbc646aeb2a46999a8c6def5.mailgun.org/messages' in C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php:359 Stack trace: #0 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(292): Guzzle\Http\Curl\CurlMulti->isCurlException(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array) #1 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(257): Guzzle\Http\Curl\CurlMulti->processResponse(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array) #2 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(240): Guzzle\Http\Curl\CurlMulti->processMessages() #3 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\C in C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php on line 359
如何解决这个问题?
是 guzzle 证书问题吗?
我这样附上文件(这里没有错)(php 可以访问文件):
$mg->sendMessage($domain, array('from' => '...',
'to' => '...',
'subject' => '...',
'text' => '...'
), array(
'attachment' => array('zzz.txt')
)
);
显然,在当前目录中找不到文件 zzz.txt
,您应该指定它的绝对位置或相对位置,例如,使用 __DIR__
常量:
$mg->sendMessage(
$domain,
array(
'from' => '...',
'to' => '...',
'subject' => '...',
'text' => '...',
),
array(
'attachment' => array(
__DIR__ . '/foo/bar/zzz.txt',
),
),
);
参考 http://php.net/manual/en/language.constants.predefined.php。
它对我很有用。试试下面的代码
define('ROOTPATH', dirname(__FILE__));
$filePath = ROOTPATH.'/textfile.txt';
$result = $mgClient->sendMessage("$domain",
array('from' => 'from address',
'to' => 'to addreess',
'subject' => 'Find Attachment',
'html' => '<h2>HTML</h2>'),
array('attachment' => array($filePath)));
我在尝试使用 mailgun 附加文件时遇到此错误。
Fatal error: Uncaught exception 'Guzzle\Http\Exception\CurlException' with message '[curl] 26: couldn't open file "zzz.txt" [url] https://api.mailgun.net/v2/sandbox8df78f0cdbc646aeb2a46999a8c6def5.mailgun.org/messages' in C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php:359 Stack trace: #0 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(292): Guzzle\Http\Curl\CurlMulti->isCurlException(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array) #1 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(257): Guzzle\Http\Curl\CurlMulti->processResponse(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Curl\CurlHandle), Array) #2 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(240): Guzzle\Http\Curl\CurlMulti->processMessages() #3 C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\C in C:\xampp\htdocs\tutlage\newsletter\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php on line 359
如何解决这个问题? 是 guzzle 证书问题吗?
我这样附上文件(这里没有错)(php 可以访问文件):
$mg->sendMessage($domain, array('from' => '...',
'to' => '...',
'subject' => '...',
'text' => '...'
), array(
'attachment' => array('zzz.txt')
)
);
显然,在当前目录中找不到文件 zzz.txt
,您应该指定它的绝对位置或相对位置,例如,使用 __DIR__
常量:
$mg->sendMessage(
$domain,
array(
'from' => '...',
'to' => '...',
'subject' => '...',
'text' => '...',
),
array(
'attachment' => array(
__DIR__ . '/foo/bar/zzz.txt',
),
),
);
参考 http://php.net/manual/en/language.constants.predefined.php。
它对我很有用。试试下面的代码
define('ROOTPATH', dirname(__FILE__));
$filePath = ROOTPATH.'/textfile.txt';
$result = $mgClient->sendMessage("$domain",
array('from' => 'from address',
'to' => 'to addreess',
'subject' => 'Find Attachment',
'html' => '<h2>HTML</h2>'),
array('attachment' => array($filePath)));