Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2015, 15:05
Avatar de Middrel
Middrel
 
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Duda con PHPMailer

Hola, buenas tardes

Tengo una duda al usar PHPMailer, creo que estoy colocando mal la información, porque no me llegan correos desde un formulario que tengo.

Es una forma de registro a un sitio, el usuario solamente ingresa lo siguiente:

Usuario -> Correo electrónico válido.
Password -> Un password con ciertas características.

En PHPMailer, se deben configurar ciertos parámetros de acuerdo a tu servidor SMTP. Creo que es aquí donde me estoy confundiendo al meter los datos.

Por ejemplo, yo tengo un servidor con lo siguiente:

Host: dominio.jobs
Puerto SMTP: 26
Username: [email protected]
Password: C0nt4ct0$

Tengo el cuerpo del mail en una variable llamada $shtml:

Código PHP:
$shtml 
    <div style="font-family:"Arial"; width:80%; margin:0 auto;">
        <table width="100%" border="0">
          <tr>
            <td align="left" height="auto"><a href="http://dominio.jobs" target="_blank"><img src="http://dominio.jobs/img/logos/logo.png" alt="" title="dominio.jobs" /></a></td>
          </tr>
          <tr>
            <td align="left" style="font-size:18px; color:#f7941e; font-weight:bold;" height="50px">Bienvenido a dominio.jobs:</td>
          </tr>
          <tr>
            <td align="left" height="50px">
                Tu cuenta se creo con el correo: ' 
.  $email '
                <br /><br />
                Es necesario que la valides con el código de verificación que te estamos proporcionando.
                <br />
                Cópialo y pégalo en el paso 2 de tu registro y dale click en <strong>Activar</strong> para finalizar el proceso.
            </td>
          </tr>
          <tr>
            <td align="center" height="50px">
                <strong>Código de verificación:</strong>
                <br />
                ' 
$codigo '
                <br /><br />
                <strong>o dirígete a la siguiente liga</strong>
                <br /><br />
                <a href="http://dominio.jobs/account-user.php?register=verify&email=' 
$email '&code=' $codigo '">code=' $codigo '</a>
                <br /><br />                
            </td>
          </tr>
          <tr>
            <td align="left" height="50px">
                Este código de verificación sólo puede ser utilizado el día en que generaste tu registro, así que por favor concluye el proceso lo más pronto posible.
                <br /><br />
                <strong>Dominio.jobs</strong>, es la ....
                <br /><br />
                Para cualquier duda o aclaración, por favor envíanos un correo a [email protected] comentándonos el problema que se haya presentado en tu registro.
                <br /><br />
            </td>
          </tr>
          <tr>
            <td align="left" height="50px" style="border-top:2px solid #f7941e; color:#4D4A4A; font-size:10px; padding:15px 0;">
                Este email fue enviado desde el sitio de <strong>dominio.jobs</strong> debido a que realizaste tu registro en el sistema. Asegúrate de marcarlo como correo deseado y así evitar que 
                pueda ser enviado a tu carpeta de Spam. 
                <br /><br/>
                <strong>&copy; 2015, Dominio.jobs Todos los Derechos Reservados.</strong>
                <br />
                <a href="http://dominio.jobs.com/privacy-policy.php" target="_blank">Políticas de Privacidad</a> | <a href="http://dominio.jobs/terms-and-conditions.php" target="_blank">Términos y Condiciones</a>
            </td>
          </tr>
        </table>
    </div>
    '

Bueno, desde una variable llamada $email, llega desde el formulario el correo de quién se esté registrando, así como el password y una variable llamada $codigo. Estos dos últimos no tienen importancia en estos momentos.

Ahora, tengo el código de PHPMailer:

Código PHP:
require("class.phpmailer.php");

$mail = new PHPMailer();
$body file_get_contents('contents.html');
$body preg_replace('/[]/','',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host "mydomain"// SMTP server
$mail->SMTPDebug 2// enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth true// enable SMTP authentication
$mail->Host "mydomin"// sets the SMTP server
$mail->Port 25// set the SMTP port for the GMAIL server
$mail->Username "me@mydomain"// SMTP account username
$mail->Password "mySMTPpassword"// SMTP account password
$mail->SetFrom('me@mydomain''Mailer Elim');
$mail->AddReplyTo("me@mydomain","Elim Qiu");
$mail->Subject "PHPMailer Test Subject via smtp, basic with authentication";
$mail->AltBody "To view the message, please use an HTML compatible email viewer!"// optional, comment out and test
$mail->MsgHTML($body);
$address "him@hisdomain";
$mail->AddAddress($address"HisFirst HisLast");
$mail->AddAttachment("infinite.gif"); // test attachment I added to /mailer
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo 
"Mailer Error: " $mail->ErrorInfo;
} else {
echo 
"Message sent!";

Con la información que tengo anteriormente yo iría modificando los parámetros de la función, siendo:

Código PHP:
$body file_get_contents('contents.html');  -> No lo usaría
$body 
preg_replace('/[]/','',$body); -> No lo usaría
$body 
$shtml
Código PHP:
$mail->Host "mydomain"quedaría como $mail->Host "smtp.dominio.jobs";
$mail->Port 25En este casomi puerto es 26pero no sé si debo cambiarlo o dejarlo como esta.
$mail->Username "me@mydomain"quedaría como $mail->Username "[email protected]";
$mail->Password "mySMTPpassword"quedaría como $mail->Password "C0nt4ct0$"
Aquí empiezo a tener las mayores dudas:

Código PHP:
$mail->SetFrom('me@mydomain''Mailer Elim');
$mail->AddReplyTo("me@mydomain","Elim Qiu"); 
estos dos parámetros SetFrom y AddReplyTo, ¿deberían quedar con la misma cuenta de [email protected]? es decir:

Código PHP:
$mail->SetFrom('[email protected]''X Nombre');
$mail->AddReplyTo("[email protected]","Y nombre"); 
Código PHP:
$mail->Subject "PHPMailer Test Subject via smtp, basic with authentication"quedaría como $mail->Subject "Mi subject";
$mail->AltBody "To view the message, please use an HTML compatible email viewer!"// optional, comment out and test No lo usaría 
y luego:

Código PHP:
$address "him@hisdomain";
$mail->AddAddress($address"HisFirst HisLast"); 
¿Sería el correo de quién envía el formulario de registro? Es decir:

Código PHP:
$address $email;
$mail->AddAddress($address"Sr. Z"); 
Si es así como digo, no sé que pasa pero el correo jamás llega, por ello pienso que me estoy equivocando en la configuración. ¿Podrían orientarme sobre esto y saber en que estoy mal?

De antemano, les agradezco por sus comentarios.

Saludos!!