PHP вставка изображения сломана - PullRequest
0 голосов
/ 11 мая 2018

Привет. Я пытаюсь вставить изображение в электронное письмо, и вот мой php-код:

$mail1->SMTPDebug = 2;                                 
$mail1->isSMTP();                                     
$mail1->Host = 'smtp.gmail.com';  
$mail1->SMTPAuth = true;                               
$mail1->Username = 'email@gmail.com';                
$mail1->Password = 'password';                           
$mail1->SMTPSecure = 'tls';                   
$mail1->Port = 587;
$mail1->setFrom('auto-reply@email.ca', '123');                  
$mail1->addAddress('email@gmail.com');     
$mail1->isHTML(true);                                 
$mail1->Subject = 'Thanks For Reaching us!';
$mail1->Body    = '
       <p> This is a test picture  <img src="img/logo.png"/>  </p>              
         ' ;

$mail1->send();
exit;

Когда я запускаю этот код на своем локальном хосте, в электронном письме отображается текст, но со сломанным знакомизображение, и я пробовал все, включая

$mail1->AddEmbeddedImage('img\logo.png', "two", "logo.png");

, однако, оно вообще не показывает изображение, кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 11 мая 2018

Это не удастся, потому что это относительный путь, и у электронных писем нет базового URL-адреса для сравнения (и это не то, как вы нацеливаете на встроенное изображение), поэтому он не будет работать.

$mail1->Body = '<p>This is a test picture <img src="img/logo.png"/></p>';

Сделайте это вместо:

$mail1->Body = '<p>This is a test picture <img src="cid:two"/></p>';

Тогда это будет работать с:

$mail1->AddEmbeddedImage('img\logo.png', "two", "logo.png");

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

...