Foros del Web » Programando para Internet » PHP »

Conexion a SMPT

Estas en el tema de Conexion a SMPT en el foro de PHP en Foros del Web. Buenas tardes amigos. Tengo una seria duda en la programación de un formulario de contacto Tengo contratado un hosting en un empresa y resulta que ...
  #1 (permalink)  
Antiguo 05/03/2016, 14:18
 
Fecha de Ingreso: diciembre-2015
Mensajes: 16
Antigüedad: 8 años, 4 meses
Puntos: 1
Pregunta Conexion a SMPT

Buenas tardes amigos.

Tengo una seria duda en la programación de un formulario de contacto

Tengo contratado un hosting en un empresa y resulta que por "motivos de seguridad" no puedo poner este código PHP porque no funcionará:
Código PHP:
$destino "[email protected]";
$nombre $_Post["nombre"];
$correo $_Post["correo"];
$numero $_Post["numero"];
$website $_Post["website"];
$mensaje $_Post["mensaje"];
$contenido "Nombre: " $nombre "\nCorreo: " .$correo "\nTeléfono" $numero "\nWebsite" $website "\nMensaje" $mensaje;
mail($destino,="Contacto"$contenido);
header("Location:index.html");
?> 
Y me han mandado un código desde el cual me hago una conexión al servidor SMPT completa, aquí el código que me proporcionaron:
Le indicamos que por razones de seguridad la función Mail para el servidor está bloqueada.
Para hacer envíos de correo desde la plataforma de hosting compartido, tiene que hacer una autenticación SMTP completa.
Código PHP:
error_reportingE_ALL & ~( E_NOTICE E_STRICT E_DEPRECATED ) ); //Aquí se genera un control de errores "NO BORRAR NI SUSTITUIR"

require_once "Mail.php"//Aquí se llama a la función mail "NO BORRAR NI SUSTITUIR"

$to ''//Aquí definimos quien recibirá el formulario
$from ''//Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$host ''//Aquí definimos cual es el servidor de correo saliente desde el que se enviaran los correos
$username ''//Aqui se define el usuario de la cuenta de correo
$password ''//Aquí se define la contraseña de la cuenta d ecorreo que enviará el mensaje
$subject ''//Aquí se define el asunto del correo
$body ''//Aquí se define el cuerpo de correo

//A partir de aquí empleamos la función mail para enviar el formulario

$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp Mail::factory('smtp',
array (
'host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));

$mail $smtp->send($to$headers$body);

//Una vez aquí habremos enviado el mensaje mediante el formulario

//El siguiente codigo muestra en pantalla un mensaje indicando que el mensaje ha sido enviado y a que cuenta ES OPCIONAL. Lo incluimos para verificar que el formulario de prueba esta funcionando

if (PEAR::isError($mail)) {
echo(
"
$mail->getMessage() . "

"
);
} else {
echo 
"Mensaje enviado desde POA a "$to ;
}



?> 
Alguien podría ayudarme a introducir el primer php (que entiendo mas o menos) al segundo (que no)
Muchas gracias por vuestro tiempo
  #2 (permalink)  
Antiguo 05/03/2016, 14:29
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Conexion a SMPT

Hola Alejandro_xgr3x,

Estoy seguro que si lo revisas y lo lees con detenimiento, dados todos los comentarios que contiene el código, sabrás hacerlo funcionar, si después de haberlo intentado, llegas a un punto en el que no sabes cómo seguir, es el momento de venir por aquí y preguntar lo que necesites sobre el código que hayas creado hasta ese momento.
  #3 (permalink)  
Antiguo 05/03/2016, 14:32
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Conexion a SMPT

Claramente te dice donde tienes que modificar:

Código PHP:
$to ''//Aquí definimos quien recibirá el formulario
$from ''//Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$host ''//Aquí definimos cual es el servidor de correo saliente desde el que se enviaran los correos
$username ''//Aqui se define el usuario de la cuenta de correo
$password ''//Aquí se define la contraseña de la cuenta d ecorreo que enviará el mensaje
$subject ''//Aquí se define el asunto del correo
$body ''//Aquí se define el cuerpo de correo 
Debes fijarte en
$username, $password y $host, aqui debes reemplazar por los datos de la cuenta de correo de la cual se enviaran los mensajes.

Código PHP:
$username '[email protected]';
$password 'contraseña_correo';
$host 'mail.dominio.com'
Y los demas campos, tienes que llenarlos con las variables POST que vienen del mismo codigo de arriba.


Código PHP:
$to "[email protected]"//Aquí definimos quien recibirá el formulario
$from =  $_Post["correo"]; //Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$subject 'Contacto'//Aquí se define el asunto del correo

$nombre $_Post["nombre"];
$numero $_Post["numero"];
$website $_Post["website"];
$mensaje $_Post["mensaje"];
$contenido "Nombre: " $nombre "\nCorreo: " .$from"\nTeléfono" $numero "\nWebsite" $website "\nMensaje" $mensaje;
$body $contenido//Aquí se define el cuerpo de correo 
  #4 (permalink)  
Antiguo 05/03/2016, 15:05
 
Fecha de Ingreso: diciembre-2015
Mensajes: 16
Antigüedad: 8 años, 4 meses
Puntos: 1
Pregunta Respuesta: Conexion a SMPT

Cita:
Iniciado por petit89 Ver Mensaje
Claramente te dice donde tienes que modificar:

Código PHP:
$to ''//Aquí definimos quien recibirá el formulario
$from ''//Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$host ''//Aquí definimos cual es el servidor de correo saliente desde el que se enviaran los correos
$username ''//Aqui se define el usuario de la cuenta de correo
$password ''//Aquí se define la contraseña de la cuenta d ecorreo que enviará el mensaje
$subject ''//Aquí se define el asunto del correo
$body ''//Aquí se define el cuerpo de correo 
Debes fijarte en
$username, $password y $host, aqui debes reemplazar por los datos de la cuenta de correo de la cual se enviaran los mensajes.

Código PHP:
$username '[email protected]';
$password 'contraseña_correo';
$host 'mail.dominio.com'
Y los demas campos, tienes que llenarlos con las variables POST que vienen del mismo codigo de arriba.


Código PHP:
$to "[email protected]"//Aquí definimos quien recibirá el formulario
$from =  $_Post["correo"]; //Aquí definimos que cuenta mandará el correo, generalmente perteneciente al mismo dominio
$subject 'Contacto'//Aquí se define el asunto del correo

$nombre $_Post["nombre"];
$numero $_Post["numero"];
$website $_Post["website"];
$mensaje $_Post["mensaje"];
$contenido "Nombre: " $nombre "\nCorreo: " .$from"\nTeléfono" $numero "\nWebsite" $website "\nMensaje" $mensaje;
$body $contenido//Aquí se define el cuerpo de correo 


petit89 y rbczgz

Gracias por las respuestas

Antes de recurrir aquí intente sustituir los valores según me indica, pero tenia ciertas dudas como por ejemplo:

en $username, $password y $host. ¿Que cuenta de correo y contraseña debo incluir?

La de "[email protected]" u otra diferente

Y en el caso de que así fuera, ¿otros no podrían ver la password mirando mi php? ¿o no es posible?

Lo siento si soy un poco patoso, me estoy iniciando en este mundo
  #5 (permalink)  
Antiguo 05/03/2016, 15:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Conexion a SMPT

Hola Alejandro_xgr3x,

En esos datos, debes colocar los de la cuenta desde la que vas a enviar el mensaje, y sí, si ven tu php verán la password, pero si tú no le das tus datos de acceso a nadie, nadie verá tu php, es decir, desde el navegador no se puede ver porque PHP es un lenguaje que se interpreta en el servidor y lo que devuelve es código HTML, CSS, JavaScript, etc. es decir, una página web normal y corriente.

Espero haberte aclarado.
  #6 (permalink)  
Antiguo 05/03/2016, 15:40
 
Fecha de Ingreso: diciembre-2015
Mensajes: 16
Antigüedad: 8 años, 4 meses
Puntos: 1
Respuesta: Conexion a SMPT

Cita:
Iniciado por rbczgz Ver Mensaje
Hola Alejandro_xgr3x,

En esos datos, debes colocar los de la cuenta desde la que vas a enviar el mensaje, y sí, si ven tu php verán la password, pero si tú no le das tus datos de acceso a nadie, nadie verá tu php, es decir, desde el navegador no se puede ver porque PHP es un lenguaje que se interpreta en el servidor y lo que devuelve es código HTML, CSS, JavaScript, etc. es decir, una página web normal y corriente.

Espero haberte aclarado.
Creo que lo entendí todo, he hecho los deberes y he conseguido algo así. ¿Podrias decirme si ves algún error?
Gracias
Código PHP:
<?php 

$nombre 
$_Post["nombre"];
$numero $_Post["numero"];
$website $_Post["website"];
$mensaje $_Post["mensaje"];
$contenido "Nombre: " $nombre "\nCorreo: " .$from"\nTeléfono" $numero "\nWebsite" $website "\nMensaje" $mensaje;



error_reportingE_ALL & ~( E_NOTICE E_STRICT E_DEPRECATED ) ); 

require_once 
"Mail.php";

$to '[email protected]';
$from =  $_Post["correo"]; 
$host 'smtp.midominio.com'//esta bien que ponga el prefijo smtp o debo poner imap? 
$username '[email protected]'
$password 'Contraseña de mi email'
$subject 'nombre'
$body $contenido

$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp Mail::factory('smtp',
array (
'host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));

$mail $smtp->send($to$headers$body);


if (
PEAR::isError($mail)) {
echo(
"
$mail->getMessage() . "

"
);
} else {
echo 
"Mensaje enviado desde POA a "$to ;
}



?>
  #7 (permalink)  
Antiguo 05/03/2016, 17:28
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Conexion a SMPT

El error_reporting debe de ser lo primero en tu código, y en la línea de $username te hace falta el punto y coma. Al menos es lo que veo mal :D
  #8 (permalink)  
Antiguo 06/03/2016, 03:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Conexion a SMPT

Coincido completamente con rodocoyote15. Por lo demás, creo que todo está como debería.

Etiquetas: mail
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 20:03.