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)));