subir por para mail incrustada imagenes imagen formulario enviar correo con adjuntar php email attachment

por - formulario para subir imagenes php



PHP Adjuntar una imagen a un correo electrónico (6)

¿Hay alguna manera de adjuntar una imagen a un mensaje de correo electrónico con formato html creado en PHP?

Debemos asegurarnos de que un logotipo corporativo esté en los correos electrónicos que se envían a los clientes que quizás no tengan acceso a Internet mientras leen su correo electrónico (obviamente tendrán que descargar los archivos).


¿Estás rodando por tu cuenta o usando una clase prefabricada? Recomiendo PHP Mailer [0] a mí mismo, y también hay PEAR :: Mail_Mime [1] entre otros que Google estaría feliz de ayudarlo a encontrar. He estado usando PHP Mailer para enviar mensajes con imágenes incrustadas [2] durante años sin problemas, aunque tenga en cuenta que cada imagen aumenta enormemente el peso del ancho de banda del correo electrónico, por lo que generalmente no debe utilizarse para nada a granel. Y para hacer eco a Bill, utiliza también la alternativa de solo texto.

[0] http://phpmailer.sourceforge.net/

[1] http://pear.php.net/manual/en/package.mail.mail-mime.php

[2] http://phpmailer.sourceforge.net/docs/PHPMailer/PHPMailer.html#AddEmbeddedImage

tomado de http://lists.evolt.org/archive/Week-of-Mon-20060612/183029.html


El paquete Mail_Mime de PEAR es lo que buscas aquí.

Una vez que haya configurado su mensaje, agregar un archivo adjunto es tan simple como:

$mime = new Mail_mime("/n"); $mime->setTXTBody($msg_text); $mime->setHTMLbody($msg_html); // Add gif as attachment to mail $mime->addAttachment("/path/to/image/smile.gif", "image/gif"); $body = $mime->get(); $headers = $mime->headers($headers); $mail->send("[email protected]", $headers, $body);

Si está buscando su logotipo para mostrarlo en un lugar particular en el correo electrónico, en lugar de hacerlo únicamente como un archivo adjunto, puede hacer lo siguiente:

// In your message html: <img src=''logo.gif'' alt=''Our logo'' /> // PHP: $mime->addHTMLImage(''/path/to/image/logo.gif'');

Este enfoque puede tener resultados mixtos dependiendo del cliente de correo de su usuario, por lo que antes de enviarlo intente probar su formato en las cuentas ficticias de gmail, yahoo y hotmail.


Hay respuestas más que suficientes aquí que podrían ayudar a solucionar su problema específico, pero pensé que podría valer la pena señalar que es posible que tenga un problema mayor que no haya considerado.

Específicamente, la redacción de correos electrónicos enviados a través de PHP está llena de posibles errores y solo debe hacerse si tiene una idea muy clara de lo que puede salir mal.

Si planea enviar correos electrónicos con bastante intensidad, le sugiero encarecidamente hacerlo a través de un cliente dedicado de marketing por correo electrónico o implementar una de las muchas API de marketing por correo electrónico que se enviarán por usted. ( mailchimp es aparentemente decente).


Probablemente sea más fácil usar alguna biblioteca que pueda manejar archivos adjuntos de correo electrónico. Por ejemplo, Mail_Mime de PEAR.



Pruebe el paquete PEAR Mail_Mime , que puede incrustar imágenes por usted .

Debe usar el método addHTMLImage () y pasar un id. De contenido (cid), que es una cadena de texto única que también usará en el atributo src de su img como un cid: URL. Por ejemplo:

include(''Mail.php''); include "Mail/mime.php"; $crlf = "/r/n"; $hdrs = array( ''From'' => ''[email protected]'', ''Subject'' => ''Mail_mime test message'' ); $mime = new Mail_mime($crlf); //attach our image with a unique content id $cid="mycidstring"; $mime->addHTMLImage("/path/to/myimage.gif", "image/gif", "", true, $cid); //now we can use the content id in our message $html = ''<html><body><img src="cid:''.$cid.''"></body></html>''; $text = ''Plain text version of email''; $mime->setTXTBody($text); $mime->setHTMLBody($html); $body = $mime->get(); $hdrs = $mime->headers($hdrs); $mail =& Mail::factory(''mail''); $mail->send(''[email protected]'', $hdrs, $body);