Я пытаюсь отправить электронное письмо с изображением; Тело моего письма:
<?php $message = <<< email <img src="http://planet-earth.bogus.us/icons/secret.pictures.gif"> Dear {$email}, email; ?>
Когда я получаю письмо, я не вижу изображение. Вместо этого я вижу <img src="http://planet-earth.bogus.us/icons/secret.pictures.gif">
. Я знаю, что это из-за <<< email; как бы я мог отображать изображение вместо кода, используя <<< email?
ОБНОВИТЬ
Я использую zend-framework. Мой код выглядит так:
<?php $mail = new Zend_Mail(); $mail->setFrom('admin@mysite.com', 'My site'); $mail->addTo($recoveryaccount->username); $mail->setSubject("Mysite"); include "_email_recover_password.phtml"; $mail->setBodyText($message); $mail->send(); ?> _include "_email_recover_password.pthml" <?php $message = <<< email <img src="http://img.ruphp.com/php/picturelocation.picture.gif"> Dear {$account->getUsername()}, Somebody has requested that the password associated with this account be reset. If you initiated this request, click the below link to complete the process: http://www.example.com/{$account->getRecovery()} Thank you! Mysite Questions? Contact us at admin@mysite.com email; ?>
-<?php $mail = new Zend_Mail(); $mail->setFrom('admin@mysite.com', 'My site'); $mail->addTo($recoveryaccount->username); $mail->setSubject("Mysite"); include "_email_recover_password.phtml"; $mail->setBodyText($message); $mail->send(); ?> _include "_email_recover_password.pthml" <?php $message = <<< email <img src="http://img.ruphp.com/php/picturelocation.picture.gif"> Dear {$account->getUsername()}, Somebody has requested that the password associated with this account be reset. If you initiated this request, click the below link to complete the process: http://www.example.com/{$account->getRecovery()} Thank you! Mysite Questions? Contact us at admin@mysite.com email; ?>
Чтобы ответить на ваш вопрос, вам нужно отправить заголовки содержимого, которые задают тип содержимого text\html
. Без него ваше сообщение обрабатывается принимающим клиентом как обычный текст. Следующий код правильно устанавливает заголовки содержимого и отправляет базовое сообщение HTML.
// message $message = ' <html> <body> <img src="http://planet-earth.bogus.us/icons/secret.pictures.gif"> </body> </html> '; // Add the content headers $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'To: David <david-z@domain.com>' . "\r\n"; $headers .= 'From: Bot <bot@domain.com>' . "\r\n"; mail("david-z@domain.com", "mysubject", $message, $headers);
Нет, это не из-за heredoc. Вам нужно отправить правильно отформатированную HTML-почту, которой вы не являетесь. Существуют различные заголовки и структурный материал MIME «скелет», который вы вообще не отправляете.
Не пытайтесь строить его самостоятельно. Используйте Swiftmailer или PHPMailer, чтобы сделать это за вас.
Что я использую,
$from="From: TEST\r\nMIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1"; mail("TOWHO@TEST.com", $title, $content, $from);