entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como enviar mail en un SMTP remoto con relay por PHP?

Estoy usando phpmailer, pero en todos los ejemplos me pide un usuario y pass para conectar, pero necesito que use el relay del smtp y no puedo configurarlo.
Basicamente lo que quiero es mandar un mail colocando un destino y un mensaje conectado a un smpt remoto con relay.

0voto

mrczrt comentado

Hola, estas usando una version superior a la 5?

0voto

Leonardo-Tadei comentado

Hola Adrián,

podrías enviarnos la configuración del PHPMailer para ver como estás usando la conexión?
También es relevanet saber en qué SO estás trabajando.

Saludos!

0voto

asdenis comentado

Hola, gracias por responder. El SO que estoy usando es Windows 2003 Server SP1, con apache 2.2.25 y php 5.3.27. Los datos SO donde esta el relay, desconozco creo que es un 2008 server.

Este es el ultimo codigo que tengo gracias al comentario de mrczrt, todavia no lo he podido probar porque tengo que ir hasta el lugar donde esta el server.

Este codigo puede funcionar?

<?php
require_once('class.phpmailer.php');
require_once('class.smtp.php');
require 'PHPMailerAutoload.php';

try {
    $mail = new PHPMailer(true);
    $mail->IsSMTP(); // Using SMTP.
    $mail->CharSet = 'utf-8';
    $mail->SMTPDebug = 2; // Enables SMTP debug information - SHOULD NOT be active on production servers!
    $mail->SMTPAuth = false; // Enables SMTP authentication.
    $mail->Host = "relay-hosting.secureserver.net"; // SMTP server host.

    $mail->AddReplyTo('[email protected]', 'Me');
    $mail->AddAddress('[email protected]', 'Them');
    $mail->SetFrom('[email protected]', 'Me');
    $mail->Subject = 'PHPMailer Test Subject via smtp, basic with authentication';
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
    $mail->MsgHTML("Hi, this is an test email");
    $mail->Send();
} catch (phpmailerException $e) {
    echo $e->errorMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

Gracias.

2 Respuestas

2votos

Leonardo-Tadei Puntos227020

Hola Adrían,

en el código que ponés en tu comentario veo algunas cosas que pueden imposibilitar que tu mensaje sea despachado.

Estás usando como servidor de salida: $mail->Host = "relay-hosting.secureserver.net"; pero estás usando como FROM: $mail->SetFrom('[email protected]', 'Me');

Esto hará que dependa de la configuración del relay si permite enviar mensajes de un dominio a través de otro, y también de las reglas de enmascarameinto de dominio que tenga configurado el relay.

En cualquier caso, dado que la applicación funciona en un MS Windows 2003 Server, deberías poder configurar ahí algún cliente de correo y probar enviar mensajes. Luego, la configuración que le hayas dado al servidor SMTP, usuarios, contraseñas y nombres de cuenta, estarán validadas para que se las pongas a PHPMailer, y debería funcionar el envío exactamente igual con el cliente de correo.

Sobre datos de configuración probados y funcionando, luego veremos si hace falta algún retoque en el código. Así vamos acotando los problemas.

Saludos cordiales!

0voto

asdenis comentado

Funciono!!. Comparto el codigo:

<?php
    require_once('class.phpmailer.php');
    require_once('class.smtp.php');
    require 'PHPMailerAutoload.php';

    try {
        $mail = new PHPMailer(true);
        $mail->IsSMTP(); // Using SMTP.
        $mail->CharSet = 'utf-8';
        $mail->SMTPAuth = false; // Enables SMTP authentication.
        $mail->Host = "relay-hosting.net"; // SMTP server host.

        $mail->AddAddress('[email protected]', 'Nombre');
        $mail->SetFrom('[email protected]', 'Nombre');
        $mail->Subject = 'PHPMailer Test Subject via smtp';
        $mail->AltBody = 'Texto sin html';
        $mail->MsgHTML("Cuerpo del mail");
        $mail->Send();

    } catch (phpmailerException $e) {
        echo $e->errorMessage();
    } catch (Exception $e) {
        echo $e->getMessage();
    }
?>

0voto

Peter comentado

Si esta es la respuesta correcta, por favor márcala como tal, porque tienes seleccionada la otra y confunde. :D

Saludos.

2votos

mrczrt Puntos6920

La documentación dice q no es forzoso : http://phpmailer.worxware.com/index.php?pg=examplebsmtpna si es una version 5 o superior, saluuudos.

0voto

asdenis comentado

si, es la ultima version. Es necesario cambiar algo en Apache o el PHP.ini, algun modulo?
se puede resolver sin importar clases o librerias de terceros??

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta