#php #email #base64
Вопрос:
Я пытаюсь прикрепить изображения base64 в свою электронную почту PHPMailer.
Возможно ли это сделать? Как я могу прикрепить массив изображений $base64Images к электронной почте? По электронной почте я получаю файлы с не поддерживаемым форматом.
$base64Images = array(3){
[0]=>
string(2747277) "data:image/jpeg;base64,9j/4AAA ..."
[1]=>
string(2747277) "data:image/jpeg;base64,9j/4AAA ..."
[2]=>
string(2747277) "data:image/jpeg;base64,9j/4AAA ..."
}
Моя функция электронной почты.
try {
$mail = new PHPMailer(true);
if ($smtp) {
$mail->IsSMTP();
$mail->SMTPKeepAlive = true;
$mail->Host = $smtp;
$mail->Port = $port;
if ($auth) {
$mail->SMTPAuth = true;
$mail->Username = $auth_user;
$mail->Password = $auth_password;
}
}
$mail->CharSet = 'utf-8';
$mail->ContentType = 'text/html';
$mail->SetFrom($sender);
$mail->AddAddress($recipient);
$mail->Subject = $mailSubject;
$mail->MsgHTML($mailBody);
Прикрепите к электронной почте.
foreach ($base64Images as $base64Image) {
$mail->AddStringAttachment($base64Image, 'Filename.jpeg', 'base64', 'image/jpeg');
}
if(!$mail->Send())
{
Log::write( "Error sending : " . $mail->ErrorInfo . " mailSubject :" . $mailSubject );
}else {
Log::write( "Email was successfully sent);
}
} catch (Exception $e) {
Log::write("{$e->getCode()}: {$e->getMessage()} in {$e->getFile()} at line {$e->getLine()}");
}
Ответ №1:
Передайте ваши изображения в кодировке base64 в качестве HTML-тегов, затем установите для параметра mail config IsHTML значение true, например:
$Body = '<img src="' . $base64Images[0] . '"/>'
$mail->Body = $Body;
$mail->IsHTML(true);
Если вы хотите прикрепить изображения к электронной почте, вам следует просто позвонить base64_decode
по ней, ничего не меняя, а затем передать ее. Это должно сработать.
(Конечно, расшифруйте его без текста data:image/png;base64
заголовка).
Комментарии:
1. Что делать, если я хочу, чтобы изображения были прикреплены не в теле ?
2. Структурируйте свою переменную тела в виде HTML-страницы, как вы хотите, и прикрепляйте свои изображения там, где вы хотите. $Body = ‘разделы перед изображениями <ваши изображения> разделы после изображений’
3. Ратеб Хаббаб, я немного меняю тему .. Я пытаюсь прикреплять изображения.