Как правильно добавить изображение в почту с помощью 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 должен разобраться с остальным.