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

Как я могу отправить письмо в формате HTML с фотографиями с помощью PHP? Я хочу иметь страницу с некоторыми настройками и выводом HTML, который отправляется по электронной почте на адрес. Что мне делать? Основная проблема заключается в прикреплении файлов.как я могу это сделать?

8 ответов


это довольно просто, оставьте изображения на сервере и отправьте им 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>This is strong text</strong> while this is not.</p>';


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

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

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

вот ссылка, которую я получил информацию.. (ссылка...)

вам понадобится безопасность...


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

Ниже приведен код PHP для вашего refference : - его взяли из http://www.php.net/manual/en/function.mail.php

<?php
// multiple recipients
$to  = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
  <p>Here are the birthdays upcoming in August!</p>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";


// Mail it
mail($to, $subject, $message, $headers);
?>

у меня есть этот код и он будет работать отлично на мой сайт

  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>As per Your request we send Your Password.</font><br/><br/>Password is : <b>'.$pass.'</b></td></tr>';
        $body .= '<tr><td colspan=2><br/>If you have any questions, please feel free to contact us at:<br/><a href="mailto:support@pms.com" target="_blank">support@pms.com</a></td></tr>';
        $body .= '<tr><td colspan=2><br/><br/>Best regards,<br>The PMS Team.</td></tr></table>';
        $subject = "Forgot Password";
        $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);
        }

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

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

отправка html-письма не сильно отличается от отправки обычных писем с помощью php. Что необходимо добавить, так это тип контента вдоль параметра заголовка функции php mail (). Вот пример.

<?php
    $to = "toEmail@domain.com";
    $subject = "HTML email";
    $message = "
    <html>
    <head>
    <title>HTML email</title>
    </head>
    <body>
    <p>A table as email</p>
    <table>
    <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    </tr>
    <tr>
    <td>Fname</td>
    <td>Sname</td>
    </tr>
    </table>
    </body>
    </html>
    ";
    // Always set content-type when sending HTML email
    $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);
?>

вы также можете проверить здесь для более подробных объяснений w3schools


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

<?php
$to = 'user@example.com';
$subject = "Send HTML Email Using PHP";

$htmlContent = '
<html>
<body>
    <h1>Send HTML Email Using PHP</h1>
    <p>This is a HTMl email using PHP by CodexWorld</p>
</body>
</html>';

// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// Additional headers
$headers .= 'From: CodexWorld<info@codexworld.com>' . "\r\n";
$headers .= 'Cc: welcome@example.com' . "\r\n";
$headers .= 'Bcc: welcome2@example.com' . "\r\n";

// Send email
if(mail($to,$subject,$htmlContent,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;
?>

исходный код и демо-версию можно найти здесь - отправить красивый HTML электронной почты с помощью PHP


самый простой способ, вероятно, просто использовать Zend Framework или любой другой фреймворк, такой как CakePHP или Symphony.

Вы можете сделать это со стандартным mail функция тоже, но вам понадобится немного больше знаний о том, как прикреплять изображения.

в качестве альтернативы, просто разместите изображения на сервере вместо их присоединения. Отправка HTML-почты документируется в mail документация по функциям.


Используйте PHPMailer,

для отправки HTML-почты вы должны установить $mail - >isHTML() только, и вы можете установить свое тело с HTML-тегами

вот хорошо написанный учебник:

rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/


хитрость заключается в том, чтобы знать идентификатор содержимого части изображения mime при создании части тела html. Это сводится к созданию тега img

https://github.com/horde/horde/blob/master/kronolith/lib/Kronolith.php

посмотрите на функцию buildMimeMessage для рабочего примера.