Trabajo como desarrollador web para una empresa, pero soy nuevo alli asique aun me falta mucha mas experiencia en todo lo que tiene que ver con el desarrollo de paginas dinamicas usando PHP.
Y hablando de PHP se me ha presentado un problema en el ultimo proyecto con el que estuve trabajando.
La cosa esa asi: tengo un formulario como parte de una pagina web, mediante el cual se pueden enviar campos de texto y se pueden adjuntar y enviar hasta 3 fotografias o imagenes.
Para el envio del formulario me valgo de la clase PHPMailer y el envio lo hago por SMTP. Adjunto parte del codigo que tengo:
Código PHP:
<?php
function armo_mail(){
global $envio_pri;
global $envio_seg;
global $envio_ter;
$mail = new PHPMailer();
$mail->IsSMTP();
if ($envio_pri!=1) {
$adjunto1=ereg_replace('../fotos/', '', $envio_pri);
$mail->AddAttachment($envio_pri);
}
if ($envio_seg!=1) {
$mail->AddAttachment($envio_seg);
$adjunto2=ereg_replace('../fotos/', '', $envio_seg);
}
if ($envio_ter!=1) {
$mail->AddAttachment($envio_ter);
$adjunto3=ereg_replace('../fotos/', '', $envio_ter);
}
$mail->Host = "mail.dominio.com.mx";
$mail->From = $_POST["email"];
$mail->FromName = $_POST["nombre"];
//$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->Subject = "Formulario de Envio de Fotografías";
$mail->Body = "ACA ARMO EL BODY"
$mail->IsHTML(true);
if(!$mail->Send()) {
return false;
} else {
return true;
}
} // END OF FUNCTION armo_mail()
error_reporting(-1);
if($_POST["accion"]=="enviar"){ //si ya envio el form
if (captcha()){ //si el codigo de verificacion es valido
if (compruebo_fotos()){ //si las fotos son correctas
if (armo_mail()){
mensaje(EXITO);
}else{
mensaje(ERROR_MAIL);
}
}else{
mensaje(ERROR_FOTOS);
}
}else{
mensaje(ERROR_VERIF);
}
}else{ //si no envio el form
?>
<table border="0" align="center" cellpadding="0" cellspacing="0" background="../imagenes/fondo_form.jpg" style="background-repeat:repeat-y">
<tr><td><img src="../imagenes/encab_form.jpg" alt="encabezado">
<form action="envia_fotos.php" name="contacto" id="contacto" method="post" enctype="multipart/form-data">
<label><strong>Cuestionario:</strong><br>
<br>
CUERPO DEL FORMULARIO
...
$mail->IsSMTP();
. . .
$mail->Host = "mail.dominio.com.mx";
$mail->From = $_POST["email"];
$mail->FromName = $_POST["nombre"];
Asi lo tenia y no funcionaba, no mandaba los datos del formulario. Para intentar solucionarlo comente la linea:
$mail->IsSMTP();
Y haciendo esto se arreglo el problema que tenia; el envio se realizo sin problemas.
Y esto es el hecho que me desconcierta y no entiendo. No se supone que el metodo IsSMTP() es el que se debe usar para hacer el envio por SMTP??. Porque entonces cuando invoco el metod el envio por SMTP no funciona y si no lo invoco funciona de maravilla.
Alguien podria explicarme porque ocurre esto?.
Muchas gracias