Web

Отправка HTML по электронной почте через PHP

Как отправить письмо в формате HTML с картинками с помощью PHP?

Я хочу иметь страницу с некоторыми настройками и HTML-выводом, которая отправляется по электронной почте на определенный адрес. Что я должен сделать?

Основная проблема заключается в прикреплении файлов. Как я могу это сделать?

 

Ответ 1

Это довольно просто: оставьте изображения на сервере и отправьте PHP + CSS ...

$to      = 'bob@example.com';

$subject = 'Website Change Reqest';

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";

$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";

$headers .= "CC: susan@example.com\r\n";

$headers .= "MIME-Version: 1.0\r\n";

$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

$message = '<p><strong>Некоторый текст</strong> для отправки.</p>';

mail($to, $subject, $message, $headers);

Именно эта строка сообщает почтовой программе и получателю, что электронное письмо содержит (надеюсь) правильно сформированный HTML-код, который ему необходимо будет интерпретировать:

$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

 

Ответ 2

Вам нужно закодировать свой html, используя абсолютный путь для изображений. Абсолютный путь означает, что вы должны загрузить изображения на сервер, а в атрибуте src изображений вы должны указать прямой путь, подобный этому: <img src="http://yourdomain.com/images/example.jpg">.

Ниже приведен код PHP: 

<?php

$to  = 'aidan@example.com' . ', '; // запятая обязательна

$to .= 'wez@example.com';

// субъект

$subject = 'С днем рождения тебя!';

// сообщение

$message = '

  <p>Here are the birthdays upcoming in August!</p>

';

// отправка HTML

$headers  = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// дополнительные заголовки

$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";

$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";

// вызов почтовой программы

mail($to, $subject, $message, $headers);

?>

 

Ответ 3

У меня есть этот код, и он отлично подойдет для вашего случая:

public function forgotpassword($pass,$name,$to) {

        $body ="<table  width=100% border=0><tr><td>";

        $body .= "<img width=200 src='";

        $body .= $this->imageUrl();

        $body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>";

        $body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>';

        $body .= '<tr><td colspan=2><br/><font size=3>В соответствии с Вашим запросом мы высылаем Ваш пароль.</font><br/><br/>Пароль: <b>'.$pass.'</b></td></tr>';

        $body .= '<tr><td colspan=2><br/>Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами по адресу:<br/><a href="mailto:support@pms.com" target="_blank">support@pms.com</a></td></tr>';

        $body .= '<tr><td colspan=2><br/><br/>С наилучшими пожеланиями,<br>Команда PMS .</td></tr></table>';

        $subject = "Забыли пароль";

        $this->sendmail($body,$to,$subject);

}

 

Почтовая функция:

function sendmail($body,$to,$subject) {

            //require_once 'init.php';

            $from='testing@gmail.com';      

            $headersfrom='';

            $headersfrom .= 'MIME-Version: 1.0' . "\r\n";

            $headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

            $headersfrom .= 'From: '.$from.' '. "\r\n";

            mail($to,$subject,$body,$headersfrom);

}

Функция image url используется, если вы хотите изменить изображение; вы можете изменить его только в одной функции. У меня есть много почтовых функций, например, забыли пароль, создали пользователя, поэтому я использую функцию image url, в которой вы можете напрямую задать путь.

function imageUrl() {

        return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg";

}

 

Ответ 4

Отправка html-письма мало чем отличается от отправки обычных писем с помощью php. Необходимо лишь добавить тип содержимого в параметр header функции php mail(). Вот пример:

<?php

    $to = "toEmail@domain.com";

    $subject = "HTML письмо";

    $message = "

    <html>

    <head>

    <title>HTML письмо</title>

    </head>

    <body>

    <p>Таблица в письме</p>

    <table>

    <tr>

    <th>Имя</th>

    <th>Фамилия</th>

    </tr>

    <tr>

    <td>Еще что-то</td>

    <td>Какой-то текст</td>

    </tr>

    </table>

    </body>

    </html>

    ";

    // Всегда устанавливайте тип содержимого при отправке HTML-почты

    $headers = "MIME-Version: 1.0" . "\r\n";

    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\b";

    $headers .= 'From: name' . "\r\n";

    mail($to,$subject,$message,$headers);

?>

 

Ответ 5

Вы можете легко отправить письмо с HTML-содержимым через PHP. Используйте следующий скрипт:

<?php

$to = 'user@example.com';

$subject = "Отправка HTML почты используя PHP";

$htmlContent = '

<html>

<body>

    <h1>HTML</h1>

    <p>HTML почтовое сообщение через PHP</p>

</body>

</html>';

// Установите заголовок типа содержимого для отправки электронной почты в формате HTML

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// дополнительные заголовки

 

$headers .= 'From: CodexWorld<info@codexworld.com>' . "\r\n";

$headers .= 'Cc: welcome@example.com' . "\r\n";

$headers .= 'Bcc: welcome2@example.com' . "\r\n";

// отправка почты

if(mail($to,$subject,$htmlContent,$headers)):

    $successMsg = 'Email has sent successfully.';

else:

    $errorMsg = 'Email sending fail.';

endif;

?>

Схожие статьи

Web

Управление индикатором выполнения загрузки в PHP

Web

Как использовать стек WAMP?

Web

Как заставить PHP перестать заменять символы «.» в массивах $_GET или $_POST

Web

Что такое обобщенные функции на примерах, для чего они нужны

×