email - por - formulario para enviar archivos adjuntos
Cómo adjuntar PDF a un correo electrónico utilizando la función de correo PHP (3)
Respuesta simple: no lo hagas construir un correo electrónico MIME a mano es un asunto doloroso, y MUY fácil de arruinar.
En su lugar, use PHPMailer o Swiftmailer . Es casi trivial hacer archivos adjuntos con ellos, y obtienes un feedback MUY LEJOS mucho mejor en caso de que algo explote, frente al simple verdadero / falso que mail () condesciende a escupir.
Estoy enviando un correo electrónico usando la función de correo PHP, pero me gustaría agregar un archivo PDF específico como archivo adjunto al correo electrónico. ¿Como podría hacerlo?
Aquí está mi código actual:
$to = "[email protected]";
$subject = "My message subject";
$message = "Hello,/n/nThis is sending a text only email, but I would like to add a PDF attachment if possible.";
$from = "Jane Doe <[email protected]>";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent!";
Debería considerar el uso de una biblioteca de correo PHP como PHPMailer, que haría que el procedimiento para enviar correo sea mucho más simple y mejor.
Aquí hay un ejemplo de cómo usar PHPMailer, ¡es realmente simple!
<?php
require_once(''../class.phpmailer.php'');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = file_get_contents(''contents.html'');
$body = eregi_replace("[/]",'''',$body);
$mail->AddReplyTo("[email protected]","First Last");
$mail->SetFrom(''[email protected]'', ''First Last'');
$mail->AddReplyTo("[email protected]","First Last");
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
Una alternativa a PHPMailer es http://swiftmailer.org/
Para eliminar los errores de desaprobación,
Reemplazar
$ body = eregi_replace ("[]", '''', $ body);
Con
$ body = preg_replace (''/.([^.]*$)/ i'', '''', $ body);