Necesito enviar un pdf con correo, ¿es posible?
$to = "xxx";
$subject = "Subject" ;
$message = 'Example message with <b>html</b>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: xxx <xxx>' . "\r\n";
mail($to,$subject,$message,$headers);
¿Qué me estoy perdiendo?
mail()
función es mucho más difícil de lo que espera, por el bien de su tiempo, intente usar PHPMailerRespuestas:
Estoy de acuerdo con @MihaiIorga en los comentarios: use el script PHPMailer. Parece que lo estás rechazando porque quieres la opción más fácil. Confía en mí, PHPMailer es la opción más fácil por un margen muy grande en comparación con intentar hacerlo tú mismo con la función incorporada de PHP
mail()
. Lamail()
función de PHP realmente no es muy buena.Para usar PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Ahora, enviar correos electrónicos con archivos adjuntos pasa de ser increíblemente difícil a increíblemente fácil:
Es solo esa línea
$email->AddAttachment();
: no podría pedir más fácilmente.Si lo hace con la
mail()
función de PHP , estará escribiendo pilas de código, y probablemente tendrá muchos errores realmente difíciles de encontrar.fuente
mail()
, pero para trabajar con archivos adjuntos es absolutamente obvio.mail()
función para agregar archivos adjuntos. Esta respuesta no me ayuda a hacer eso.Puedes intentar usar el siguiente código:
Editar 14-junio-2018
para mayor legibilidad en algunos de los proveedores de correo electrónico
$body .= $eol . $message . $eol . $eol;
y$body .= $eol . $content . $eol . $eol;
fuente
'Example message with <b>html</b>'
, entonces Content-Type debería sertext/html
más quetext/plain
. Estoy publicando el comentario en su nombre ya que no tiene suficiente representante para publicar comentarios y he marcado la respuesta para su eliminación.$file
después de hacer referencia a él$filename
?Para la actualización de seguridad de PHP 5.5.27
fuente
$nmessage .= "--".$uid."\r\n";
, y después de la parte MIME final, use$nmessage .= "--".$uid."--";
(como se muestra arriba).Swiftmailer es otro script fácil de usar que protege automáticamente contra la inyección de correo electrónico y hace que los archivos adjuntos sean muy fáciles . También desaconsejo firmemente el uso de PHP incorporado
mail()
.Usar:
lib
carpeta en su proyectorequire_once 'lib/swift_required.php';
Ahora agregue el código cuando necesite enviar un correo:
Se puede encontrar más información y opciones en los documentos de Swiftmailer .
fuente
Para enviar un correo electrónico con datos adjuntos, debemos usar el tipo MIME multiparte / mixto que especifica que los tipos mixtos se incluirán en el correo electrónico. Además, queremos usar el tipo MIME multiparte / alternativo para enviar versiones de texto sin formato y HTML del correo electrónico. Eche un vistazo al ejemplo:
Como puede ver, enviar un correo electrónico con archivo adjunto es fácil de lograr. En el ejemplo anterior, tenemos el tipo MIME multiparte / mixto, y dentro tenemos el tipo MIME multiparte / alternativo que especifica dos versiones del correo electrónico. Para incluir un archivo adjunto a nuestro mensaje, leemos los datos del archivo especificado en una cadena, lo codificamos con base64, lo dividimos en fragmentos más pequeños para asegurarnos de que coincida con las especificaciones MIME y luego lo incluimos como archivo adjunto.
Tomado de aquí .
fuente
Esto funciona para mi. También adjunta múltiples archivos adjuntos también. fácilmente
fuente
Después de luchar por un tiempo con archivos adjuntos mal formateados, este es el código que utilicé:
fuente
Concepto de trabajo:
fuente
Ninguna de las respuestas anteriores funcionó para mí debido a su formato de archivo adjunto especificado (
application/octet-stream
). Úseloapplication/pdf
para obtener mejores resultados con archivos PDF.fuente
"From: $from$eolMIME-Version: 1.0$eol"
con"From: $from" . "$eolMIME-Version: 1.0$eol"
$eol
de" . "$eol
esa manera todo está hecho de una sola vez.fuente
Código HTML:
Código PHP:
fuente
Terminé escribiendo mi propia función de envío / codificación de correo electrónico. Esto me ha funcionado bien para enviar archivos adjuntos en PDF. No he usado las otras características en producción.
Nota: A pesar de que la especificación es bastante enfática en que debe usar \ r \ n para separar los encabezados, descubrí que solo funcionaba cuando usaba PHP_EOL. Solo he probado esto en Linux. YMMV
fuente
Copiar el código de esta página - funciona en mail ()
Él comienza a hacer una función mail_attachment que se puede llamar más tarde. Lo que hace más tarde con su código de archivo adjunto.
Tiene más detalles en su página y responde algunos problemas en la sección de comentarios.
fuente
Concepto 100% funcional para enviar correos electrónicos con archivos adjuntos en php:
Utilicé este código para el envío de correo smtp de google con Adjunto ...
Nota: Descargue la biblioteca PHPMailer desde aquí -> https://github.com/PHPMailer/PHPMailer
fuente