Как правильно добавить изображение в почту с помощью html, используя phpmailer?

Это часть содержимого электронной почты

Html:

<table border="0" cellpadding="30" cellspacing="0" width="100%">
 <tr>
  <td align="center" valign="top" class="textContent">
   <img src="img/logo.png" style="height: 100px; margin-top: 13px;" alt="" />
    <br>
    <br>
    <div style="font-family:Helvetica,Arial,sans-serif;font-size:13px;color:#828282;margin-top:-23px;text-align:center;line-height:120%;">LAZOS S.A</div>
    </td>
    </tr>
</table>

Электронная почта выглядит следующим образом:

введите описание изображения здесь

Но я не могу отобразить logo.png вверх "LAZOS SA"

Внутри img папка есть logo.png

введите описание изображения здесь

Внутри почты mailAvisoSinTareasReg находится contenido.html

Это мой php-код с использованием phpmailer:

<?php

require "vendor/autoload.php";

    class HelperMail{

      private $oPhpMailer;

        function __construct(){

            $this->oPhpMailer = new PHPMailer();
            $this->oPhpMailer->isSMTP();
            $this->oPhpMailer->SMTPDebug = 2;
            $this->oPhpMailer->Debugoutput = 'html';
            $this->oPhpMailer->SMTPSecure = 'tls';
            $this->oPhpMailer->SMTPAuth = true;

        }
                public function mailFrom($from,$usuario){
                  $this->oPhpMailer->setFrom($from, $usuario);             
                }
                public function mailPort($puerto){
                  $this->oPhpMailer->Port = $puerto;   
                }
                public function mailUsuario($usuario){
                  $this->oPhpMailer->Username = $usuario;   
                }
                public function mailPassword($pass){
                  $this->oPhpMailer->Password = $pass;       
                }
                public function mailHost($host){
                  $this->oPhpMailer->Host = $host;      
                }
                public function mailSubject($subject){
                  $this->oPhpMailer->Subject = $subject;       
                }
                public function mailAddress($address){
                  /*$this->oPhpMailer->addAddress($address);*/     
                  $this->oPhpMailer->addAddress('jean.bergeret.f@gmail.com');
                }
                public function mailAltBody(){
                  $this->oPhpMailer->AltBody = 'This is a plain-text message body';     

                }

                public function setData ($usuarios){ 

                  $html = '';
                  $htmlmail = file_get_contents('helpers/mailAvisoSinTareasReg/contenido.html'); 
                  foreach($usuarios as $sKey=>$oValue){
                      $html .= '<tbody><tr><td width="50%" align ="center">'.$oValue['nombre_usuario']." ".$oValue['apellido_usuario'].'</td><td width="50%" align ="center" >'.$oValue['rut_usuario'].'</td></tr></tbody>';
                  }
                  $htmlReplace = str_replace("<tr><td>datos</td></tr>",$html,$htmlmail);  
                  $htmlReplaceFecha = str_replace("fecha",$this->setFecha(),$htmlReplace);
                  $this->oPhpMailer->msgHTML($htmlReplaceFecha);
                  $this->sendMail();
                }

                public function sendMail(){

                  if (!$this->oPhpMailer->send()) {
                            echo "Mailer Error: " . $this->oPhpMailer->ErrorInfo;
                        } else {
                            echo "Message sent!";
                        }             
                }

        private function setFecha(){

            date_default_timezone_set("America/Santiago");
            $now = time();
            putenv("TZ=America/Santiago");
            $fecha=date("Y-m-d H:i:s",$now);
            $date=date("d/m/Y", strtotime($fecha));
            return $date;

        }

        }
?>

Извините за мой английский.

2 ответа

Вы можете закодировать свое изображение и использовать его как img src

$imgFullpath = '/home/myImage.png';
$imgType     = 'png';
$base64      = 'data:image/' . $imgType . ';base64,' . base64_encode($imgFullpath);

....

когда вы создаете свой HTML:

<img src="' . $base64 . '">;

Похоже, вы не прикрепили само изображение к письму. Вы должны явно сделать это, иначе ваш src ни на что не ссылается. Добавьте эту строку, прежде чем позвонить ->send();,

$this->oPhpMailer->addAttachment('helpers/img/logo.png', 'img/logo.png');

Я использовал относительный путь (1-й параметр) для доступа к файлу изображения, а затем назвал его именем (2-й параметр), который вы использовали в качестве ссылки в своем HTML. PHPMailer должен разобраться с остальным.

Другие вопросы по тегам