Я пытаюсь создать файл с помощью dompdf и прикрепить его к MIME без сохранения. Я получил ответ от https://stackoverflow.com/a/12008553/9727103, поэтому я использовал его, но электронная почта содержит что-то не ожидаемое.
Это мой частичный код.
$pdf = $dompdf->output();
$mm = new Mail_mime();
$msg = 'Hello world to all.';
$mm->setTxtBody($msg);
$mm->addAttachment($pdf,'application/pdf','output.pdf', false);
$body = $mm->get();
$subject = 'Hello World - ['.$customer.']';
$recipients = '[email protected]';
$headers['From']= '[email protected]';
$headers['To']= '[email protected]';
$headers['Subject'] = $subject;
$params['host'] = 'smtp.sendgrid.net';
$params['port'] = '587';
$params['auth'] = true;
$params['username'] = '[email protected]';
$params['password'] = '[email protected]';
$mail_object = Mail::factory('smtp', $params); // Print the parameters you are using to the page
// Send the message
$mail_object->send($recipients, $headers, $body);
if (PEAR::isError($mail_object)) {
echo("<p>" . $mail_object->getMessage() . "</p>");
} else {
echo("Message sent!");
}
Он успешно отправляется, но электронная почта, которую я получил, такова.
--=_0db58b483b7f7e450132520a9d0c50fe
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=ISO-8859-1
Hello World to all.
--=_0db58b483b7f7e450132520a9d0c50fe
Content-Transfer-Encoding: base64
Content-Type: application/pdf;
name=output.pdf
Content-Disposition: attachment;
filename=output.pdf;
size=5444
JVBERi0xLjMKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2Vz
IDMgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9PdXRsaW5lcyAvQ291bnQgMCA+Pgpl
bmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0tpZHMgWzYgMCBSCl0KL0NvdW50IDEKL1Jl
c291cmNlcyA8PAovUHJvY1NldCA0IDAgUgovRm9udCA8PCAKL0YxIDggMCBSCi9GMiA5IDAgUgo+
PgovWE9iamVjdCA8PCAKL0kxIDE0IDAgUgo+PgovRXh0R1N0YXRlIDw8IAovR1MxIDE1IDAgUgov
R1MyIDE2IDAgUgo+Pgo+PgovTWVkaWFCb3ggWzAuMDAwIDAuMDAwIDYxMi4wMDAgNzkyLjAwMF0K
ID4+CmVuZG9iago0IDAgb2JqClsvUERGIC9UZXh0IC9JbWFnZUMgXQplbmRvYmoKNSAwIG9iago8
PAovUHJvZHVjZXIgKP7/AGQAbwBtAHAAZABmACAAKwAgAEMAUABEAEYpCi9DcmVhdGlvbkRhdGUg
....
Прикрепленный файл преобразуется в строку и есть
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=ISO-8859-1
Что я не собирался. Когда я использую https://www.freeformatter.com/base64-encoder.html#ad-output и скопируйте строку pdf и нажмите «расшифровать и загрузить», чтобы загрузить прикрепленный мной файл pdf, но я хочу, чтобы это было обычное электронное письмо с вложенным файлом.
Можно ли как-нибудь решить эту проблему? Любая помощь будет оценена. Спасибо!
Я думаю, что вы упускаете суть. PDF правильно прикреплен к вашей электронной почте. Ваш электронный адрес (согласно вашему сообщению) содержит:
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=ISO-8859-1
А также:
Content-Transfer-Encoding: base64
Content-Type: application/pdf;
name=output.pdf
Content-Disposition: attachment;
filename=output.pdf;
size=5444
Если вы посмотрите на это письмо в почтовом клиенте, вы увидите, что PDF-файл отображается в виде вложения, и сообщение в письме будет «Hello World to all». в виде обычного текста (т.е. без форматирования).
Других решений пока нет …