Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] enviar imagen a Email

Estas en el tema de enviar imagen a Email en el foro de PHP en Foros del Web. Hola a todos! os cuento mi problema a ver si me podeis hechar un cable. Estoy haciendo un formulario y me gustaría que tuviera la ...
  #1 (permalink)  
Antiguo 20/11/2015, 07:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 13 años, 9 meses
Puntos: 3
enviar imagen a Email

Hola a todos!

os cuento mi problema a ver si me podeis hechar un cable.

Estoy haciendo un formulario y me gustaría que tuviera la opción de poder cargar una imagen para luego enviarla a una dirección de email que tengo configurada en el formulario mediante php...

peeeero.. no lo consigo.. he conseguido que me envíe todos los campos de texto pero NO consigo que me envíe la imagen al correo (gmail)

dejo el codigo que tengo asta ahora por si le quereis pegar un vistazo.

Gracias de antemano!


<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">

<label for="nombre"></label>
<input type="text" name="nombre" id="nombre" />

<label for="telefono"></label>
<input type="text" name="telefono" id="telefono" />

<label for="correo"></label>
<input type="text" name="correo" id="correo" />

<label for="mensaje"></label>
<textarea name="mensaje" id="mensaje"></textarea>

<input type="file" name="imagenes" id="imagenes" maxlength="1000000" accept="image/*"/>

<input name="enviarcorreo" type="submit" class="btn" id="enviarcorreo" value="Enviar" />

</form>




<?php
$nombre=$_POST['nombre'];
$telefono=$_POST['telefono'];
$correo=$_POST['correo'];
$mensaje=$_POST['mensaje'];
$imagenes=$_POST['imagenes'];


$para='[email protected]';

$consulta='Mensaje de: '.$nombre.'


Correo: '.$correo.'

telefono: '.$telefono.'

mensaje: '.$mensaje.'

imagen: '.$imagenes.'

'.$consulta.'
';
$desde='From: '.$correo.' <[email protected]>'; ini_set(sendmail_from,'[email protected]'); mail($para,$consulta,$desde); ?>
  #2 (permalink)  
Antiguo 20/11/2015, 08:46
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: enviar imagen a Email

para ello utiliza phpmailer y la cargar como adjunto y listo es bastante fácil, ve este TEMA
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 20/11/2015, 12:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: enviar imagen a Email

Saludo.
Aparte de lo ya comentado por xfxstudios,
también puedes envíar adjuntos por la función mail, como en este ejemplo.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 20/11/2015, 14:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: enviar imagen a Email

hola! gracias por responder!

será muy sencillo... pero a mi no me sale.. he estado todo el dia siguiendo los pasos de varios tutoriales y nada.. ni me carga la imagen en mi servidor para luego mandarla a mi correo ni nada de nada... dejo el codigo que tengo ahora mismo a ver si algún experto ve donde tengo el fallo...

<form name="mail_frm" action="enviook.php" method="post" enctype="multipart/form-data">

<p>De:
<input type="text" name"de_txt" /> <br/><br/>
Para: <input type="text" name"para_txt" /> <br/><br/>
Asunto: <input type="text" name"asunto_txt" /> <br/><br/>
Adjuntar archivo: <input type="file" name="archivo_fls"/>
</p>

Mensaje: <br/>
<textarea name="mensaje_txa"></textarea>
<br/><br/>
<input type="button" name="enviar_btn" value="enviar" /> <br/>
</p>


<?php
error_reporting (E_ALL ^ E_NOTICE ^ E_WARNING);
if (isset ($_GET ["respuesta"])){
echo "<span>".$_GET["respuesta"]."</span>";
}
?>
</form>




<?php
$de = $_POST["de_txt"];
$para = $_POST["para_txt"];
$asunto = $_POST["asunto_txt"];
$mensaje = $_POST["mensaje_txa"];

$cabeceras = "MIME-Version: 1.0\r\n";
$cabeceras .="Content-type: text/html; charset=iso-8859-1\r\n";
$cabeceras .="From: $de \r\n";

$archivo = $_FILES["archivo_fls"]["tmp_name"];
$destino = $_FILES["archivo_fls"]["name"];


if(move_uploaded_file($archivo,$destino)) {
//incluyo la clase phpmailer
include_once("class.phpmailer.php");
include_once("class.smtp.php");

$mail = new PHPMailer(); //objeto de tipo PHPMailer
$mail->IsSMTP(); //protocolo SMTP
$mail->SMTPAuth = true; //autentificación en el SMTP
$mail->SMTPSecure = "ssl"; //SSL security socket layer
$mail->Host = "smtp.gmail.com"; //servidor del correo electronico
$mail->Port = 465; //puerto seguro del servidor SMTP de gmail
$mail->From = $de; //remitente de correo
$mail->AddAddress ($para); //destinatario
$mail->Username = "[email protected]"; //Aqui pon tu correo
$mail->Password = "micontraseña"; //Aqui pon tu contraseña del correo electronico
$mail->Subject = $asunto; //Asunto del correo
$mail->Body = $mensaje; //contenido del correo
$mail->WordWrap =50; //numero de columnas
$mail->MsgHTML($mensaje); //se indica que el cuerpo del correo tendra formato html
$mail->AddAttachment ($destino); //accedemos al archivo que se subio al servidor y lo adjuntamos


if($mail->Send()){ //enviamos el correo por PHPMailer
$respuesta =" El mensaje ha sido enviado correctamente";
} else{
$respuesta = "el mensaje NO se pudo enviar";
$respuesta .= " Error ".$mail->ErrorINfo;
}

} else{
$respuesta ="ocurrio un error al subir el archivo adjunto ";
}
header ("Location: formulario.php?respuesta=$respuesta");
?>

  #5 (permalink)  
Antiguo 20/11/2015, 15:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: enviar imagen a Email

Saludo.
Pues el AddAttachment recibe como primer parámetro la ruta,
pero se está enviando es el nombre del archivo.

Por ende ese es el primer cambio.
El segundo es que AddAttachment recibe como segundo parámetro
un nombre, que puede ser el parámetro que actualmente se le está
enviando a AddAttachment, estos dos separados por coma, es decir:

Código PHP:
Ver original
  1. $mail->AddAttachment($archivo, $destino);
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 20/11/2015, 17:25
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: enviar imagen a Email

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Pues el AddAttachment recibe como primer parámetro la ruta,
pero se está enviando es el nombre del archivo.

Por ende ese es el primer cambio.
El segundo es que AddAttachment recibe como segundo parámetro
un nombre, que puede ser el parámetro que actualmente se le está
enviando a AddAttachment, estos dos separados por coma, es decir:

Código PHP:
Ver original
  1. $mail->AddAttachment($archivo, $destino);
Hola mortiprogramador! gracias por responder! he modificado lo que me has dicho y he estado revisando el codigo.. y al menos he conseguido que me suba la imagen al servidor, pero todavía no consigo que me la envíe a mi correo.. sabes por que puede ser? el error que me salta es: "el mensaje No se puedo enviar"

dejo el codigo para que lo veas! saludos y gracias!

<form name="mail_frm" action="enviook.php" method="post" enctype="multipart/form-data">

<p>De:
<input type="text" name"de_txt" /> <br/><br/>
Para: <input type="text" name"para_txt" /> <br/><br/>
Asunto: <input type="text" name"asunto_txt" /> <br/><br/>
Adjuntar archivo: <input type="file" name="archivo_fls"/>
</p>


Mensaje: <br/>
<textarea name="mensaje_txa"></textarea>
<br/><br/>
<input type="submit" name="button" id="enviar_btn" value="Enviar" />
<br/>
</p>

<?php
error_reporting (E_ALL ^ E_NOTICE ^ E_WARNING);

if (isset ($_GET ["respuesta"])){
echo "<span>".$_GET["respuesta"]."</span>";
}
?>
</form>



<?php
$de = $_POST["de_txt"];
$para = $_POST["para_txt"];
$asunto = $_POST["asunto_txt"];
$mensaje = $_POST["mensaje_txa"];

$cabeceras = "MIME-Version: 1.0\r\n";
$cabeceras .="Content-type: text/html; charset=iso-8859-1\r\n";
$cabeceras .="From: $de \r\n";

$archivo = $_FILES["archivo_fls"]["tmp_name"];
$destino = $_FILES["archivo_fls"]["name"];


if(move_uploaded_file($archivo,$destino)) {
//incluyo la clase phpmailer
include_once("class.phpmailer.php");
include_once("class.smtp.php");

$mail = new PHPMailer(); //creo un objeto de tipo PHPMailer
$mail->IsSMTP(); //protocolo SMTP
$mail->SMTPAuth = true; //autentificación en el SMTP
$mail->SMTPSecure = "ssl"; //SSL security socket layer
$mail->Host = "smtp.gmail.com"; //servidor del correo electronico
$mail->Port = 465; //puerto seguro del servidor SMTP de gmail
$mail->From = $de; //remitente de correo
$mail->AddAddress ($para); //destinatario
$mail->Username = "[email protected]"; //Aqui pon tu correo
$mail->Password = "micontraseña"; //Aqui pon tu contraseña del correo electronico
$mail->Subject = $asunto; //Asunto del correo
$mail->Body = $mensaje; //contenido del correo
$mail->WordWrap =50; //numero de columnas
$mail->MsgHTML($mensaje); //se indica que el cuerpo del correo tendra formato html
$mail->AddAttachment($archivo, $destino); //accedemos al archivo que se subio al servidor y lo adjuntamos


if($mail->Send()){ //enviamos el correo por PHPMailer
$respuesta =" El mensaje ha sido enviado correctamente";
} else{
$respuesta = "el mensaje NO se pudo enviar";
$respuesta .= " Error ".$mail->ErrorINfo;
}

} else{
$respuesta ="ocurrio un error al subir el archivo adjunto ";
}
header ("Location: nuevousuario.php?respuesta=$respuesta");
?>
  #7 (permalink)  
Antiguo 20/11/2015, 19:15
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: enviar imagen a Email

Saludo
Imagino que el error es gracias a esto

Código PHP:
Ver original
  1. $respuesta = "el mensaje NO se pudo enviar";
  2.             $respuesta .= " Error ".$mail->ErrorINfo;

¿Cual es el error que devuelve ErrorINFO (Qué tal vez es ErrorInfo)

Por otra parte, ahora que subió el archivo al server,
sí se puede hacer uso de $destino como primer y segundo parámetro,
pues es la nueva ubicación del archivo, que imagino es al mismo nivel del script del mail.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #8 (permalink)  
Antiguo 22/11/2015, 15:46
 
Fecha de Ingreso: marzo-2011
Mensajes: 105
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: enviar imagen a Email

probando y probando he descubierto que el fallo estaba en el host de gmail... he puesto el host y una direccion de correo de mi servidor y ha funcionado bien

Gracias por vuestra ayuda
Saludos

Etiquetas: email, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:56.