Invia e-mail con PHPMailer - incorpora l'immagine nel corpo


97

Sto cercando di inviare posta HTML, con PHPMailer, con immagini. Il corpo viene caricato da un file html, che contiene tutte le informazioni.

Quando si invia la posta, l'immagine non appare nel corpo, sebbene io invii l'immagine anche come allegato.

Il <img>tag HTML punta allo stesso punto del luogo.

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');

Come posso fare in modo che l'html punti all'allegato in modo che l'immagine possa essere caricata nel corpo.

Guardando l'esempio fornito con PHPMailer non noto alcuna differenza, e nel loro caso l'immagine appare.

Risposte:


206

Ho trovato la risposta:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');

e sull'etichetta <img>mettisrc='cid:logo_2u'


3
Questo aiuta perfettamente !!! Per curiosità dove l'hai trovato? Spiega per favore.
mtk

Perché il backslash alla fine del cid?
Plummer

L'ho fatto così tanto tempo fa, non ricordo se c'era nemmeno un motivo. Non credo che ci sia. Solo un po 'di spazzatura, molto probabilmente.
elvispt

8
Credo che il backslash sia stato erroneamente lasciato lì da un codice precedente che sfuggiva alle virgolette, come echo "src=\"cid:logo_2u\""e non credo che il backslash sia necessario.
Cruel

8
Per chi ha bisogno di una spiegazione da un non esperto: bisogna dire al motore di rendering da dove prendere l'immagine e con quale protocollo (per usare un'immagine allegata si usa il protocollo de cid ", Content-ID). AddEmbeddedImage per dare un ID all'allegato in modo da poterlo fare riferimento (nota che possono essere suoni e altri tipi di file).
PhoneixS

3

Secondo il manuale di PHPMailer , la risposta completa sarebbe:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

Caso d'uso :

$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';

Se desideri visualizzare un'immagine con un URL remoto:

$mail->addStringAttachment(file_get_contents("url"), "filename");
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.