CURL - 使用 Laravel 发送 PDF 失败

问题描述 投票:0回答:1

我正在 Laravel 中通过 CURL 发送 PDF 文件:

<?php

namespace App\Http\Controllers\EmailSender;


use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class EmailAttachments  extends Mailable{
    use Queueable, SerializesModels;

    function __construct($from, $to, $subject, $description, $attachments, $file_names = null){
        if(str_contains($to, 'email.com')){
            return;
        }

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

        curl_setopt($ch, CURLOPT_URL, 'https://api.eu.mailgun.net/v3/'.config('app.mailgun_domain').'/messages');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data'));

        $post = array(
            'from' => $from,
            'to' => $to,
            'subject' => $subject,
            'text'    => 'Your mail do not support HTML',
            'html' => $description
        );
        
        // Attach all my files
        // Note that this files are with the full path, since the public_path to the file
        $i = 0;
        foreach ($attachments as $attachment) {
            echo $attachment;
            $post['attachment[' . $i . ']'] = curl_file_create($attachment, null, $file_names == null ? 'Report_' . date('W') .'.pdf' : $file_names[$i]);
            $i++;
        }  
        
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_USERPWD, 'api' . ':' . config('app.mailgun_secret'));

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error:' . curl_error($ch);
        }
        curl_close($ch);
    }
}


?>

我收到这条消息:

libpng warning: iCCP: known incorrect sRGB profile
Error:operation aborted by callback

我在其他项目及其工作中也这样做。

我检查了文件,路径都没有问题。我仔细检查了。路径没问题,扩展名为“.pdf”。

示例:

/home/root/backend.app.com/storage/app\works\obras\Report_0.pdf

文件已创建并可以附加。 我搜索了解决方案,但所有主题都在谈论 PNG 和其他格式。而且我没有找到解决方案。

我尝试更新 Curl 但仍然没有成功。

php laravel curl libcurl php-curl
1个回答
0
投票

也许答案很愚蠢,问题也是如此。 我会让我的问题得到解决。 在定义附件的路径时,我使用了 // 反斜杠。 例如:

"path//" . $variable . "//other_folder//a.pdf"

但我应该这样做:

"path/" . $variable . "other_folder/a.pdf"

他似乎不喜欢双反斜杠。有趣的是,它在本地工作。但在服务器上它不起作用

© www.soinside.com 2019 - 2024. All rights reserved.