【发布时间】:2019-01-24 06:52:08
【问题描述】:
我尝试发送附件 pdf 文件。我收到电子邮件但没有附件。 我已经尝试使用https://github.com/sendinblue/APIv3-php-library/blob/master/docs/Model/SendSmtpEmail.mdenter
$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail();
$sendSmtpEmail['to'] = array(array('email'=>'email@email.com'));
$sendSmtpEmail['templateId'] = 39;
$sendSmtpEmail['params'] = array(
'NUMEROFACTURE'=> "12345",
'CODECLIENT' => "1234567",
'TOSEND' => "email1@email.net",
'MONTANTFACTURE'=> number_format(12, 2, ',', ' '),
);
$attachement = new \SendinBlue\Client\Model\SendSmtpEmailAttachment();
$attachement['url']= __DIR__'/facture/Facture-'.$row["ClePiece"].'.pdf';
$attachement['name']= 'Facture-'.$row["ClePiece"].'.pdf';
$attachement['content']= "utf-8";
$sendSmtpEmail['attachment']= $attachement;
$sendSmtpEmail['headers'] = array('Content-Type'=>'application/pdf','Content-Disposition'=>'attachment','filename'=>'Facture-'.$row["ClePiece"].'.pdf',"charset"=>"utf-8");
$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_API_KEY');
$apiInstance = new SendinBlue\Client\Api\SMTPApi(new GuzzleHttp\Client(),$config);
try {
$result = $apiInstance->sendTransacEmail($sendSmtpEmail);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling SMTPApi->sendTransacEmail: ', $e->getMessage(), PHP_EOL;
}
【问题讨论】:
-
$attachement['url']必须是附件的绝对 URL(NO 是本地文件)。检查 [SendInBlue 文档][github.com/sendinblue/APIv3-php-library/blob/master/docs/Model/… -
如果文件在私有服务器中,会不会是问题所在?例如:192.168.10.01:91/facture/…'
-
请阅读文档,您有两种方法可以通过
url或content附加文件。请记住,内容是动态生成的附件的 Base64 编码块数据。您错误地将"utf-8"分配给内容。这意味着您需要将 pdf 数据转换为 base64 块数据。$attachment_content = chunk_split(base64_encode($contentPdf));像这样。
标签: php email-attachments sendinblue