Ресурс вложения Sendgrid не найден - PullRequest
1 голос
/ 15 апреля 2020

Письмо было отправлено с того же кода, теперь я получаю сообщение об ошибке «ресурс не найден» из API Sandgrid после добавления кода вложения, «sendgrid / sendgrid»: «~ 6.0» и «laravel / framework»: «5.4. * ",

<code>$from = new SendGrid\Email($data['from_name'], $data['from']);
$subject = $data['subject'];
$to = new SendGrid\Email("user","user.name@domain.name");

$content = new SendGrid\Content("text/html", $data['view']);

$mail = new SendGrid\Mail($from, $subject, $to, $content);

$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);

$response = $sg->client->mail();

//Attachment code start
if(isset($data['attach_files']) && is_array($data['attach_files']) && count($data['attach_files'])>=1){
    foreach($data['attach_files'] as $attach_files_i=>$attach_files_path){
        $filename = basename($attach_files_path);
        $file_encoded = base64_encode(file_get_contents($attach_files_path));
        //echo '<pre>--$filename';print_r($filename);echo '
'; // работает нормально // echo '
--$file_encoded';print_r($file_encoded);echo '
'; // работает нормально // echo '
--mime_content_type($attach_files_path)';print_r(mime_content_type($attach_files_path));echo '
'; // работает нормально $ attachment = new SendGrid \ Attachment (); $ Привязанность> SetType (mime_content_type ($ attach_files_path)); $ Привязанность> setContent (file_encoded $); $ Привязанность> setDisposition ( "вложение"); $ Привязанность> setFilename ($ файл); $ Response-> addAttachment ($ вложение); }} // Код вложения end $ response = $ response-> send () -> post ($ mail); echo "
"; print_r($response); die;
</code>

Ответ от sendgrid

SendGrid\Response Object
(
    [statusCode:protected] => 404
    [body:protected] => {"errors":[{"field":null,"message":"resource not found"}]}
    [headers:protected] => Array
        (
            [0] => HTTP/1.1 404 NOT FOUND
            [1] => Server: nginx
            [2] => Date: Wed, 15 Apr 2020 18:43:55 GMT
            [3] => Content-Type: application/json
            [4] => Content-Length: 58
            [5] => Connection: keep-alive
            [6] => 
            [7] => 
        )

)

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Неправильно была удалена функция base64_encode

$attachment = new \SendGrid\Attachment();
$attachment->setContent(file_get_contents($attach_files_path));
$attachment->setType(mime_content_type($attach_files_path));
$attachment->setFilename($filename);
$attachment->setDisposition("attachment");
$mail->addAttachment($attachment);
0 голосов
/ 15 апреля 2020

это может быть неправильное пространство имен класса с использованием

использовать это пространство имен

use SendGrid\Mail\Attachment;
...