Facebook Google+


Enviar correos desde otro servidor
#1
Hola! desde mi servidor no salen correos, es un servidor web gratuito tipo 000webhost y alguien me presta su servidor con PHP para enviar correos, como puedo usar de forma remota el correo de otro servidor ? espero se entienda mi pregunta Smile gracias
 
Reply
#2
Podrias crear un "servicio" para acceder al correo en otro servidor, te doy un ejemplo aunque toca pulirlo basatante y es mejor si usas una libreria para REST o similar a enviar datos con GET como yo lo hago que tiene de por si una limitacion en Kb, aqui el código.

Armas tu email asi:

Código PHP:
$mail['from_email']    =    'admin@servidor_b.com';
        
$mail['from_name']    =    'Admin';

        
$mail['to_email']    =    'fualano@gmail.com';
        
$mail['to_name']     =    'Fulano';

        
$mail['subject']    =    'Pagame por mi trabajo';
        
$mail['msg']         =    'Fulanito: te recomiendo pagarme por el trabajo'

y llamas a

Código PHP:
$ret sendMailRemote($mail); 

Ahora la implementacion, no ? Smile

Código PHP:
// esto seria un "helper" e iria en "helpers" si usas un framework MVC

function sendMailRemote($opions){
    
$query "";
    foreach (
$opions as $option => $val)
    {
        
$query .= "$option=".urlencode($val).'&';
    }        
    return @
file_get_contents(MAILSERVERURI."?$query");    


Como puedes ver sendMailRemote() hace uso de file_get_contents() para enviar los datos por GET como parametros, obviamente lo apropiado seria empujarlos con POST. Puedes ver hago referencia a MAILSERVERURI que es una constante que guarda la ubicacion del servicio, eso lo tendrias en un config.php por ejemplo:

Código PHP:
define ('MAILSERVERURI','http://servidor_b.com/mail_service.php'); 

Y ahora la parte importante y se aloja en el "servidor b" o sea... de donde salen los correos:

Código PHP:
<?php
require_once 'vendor/autoload.php';
require_once 
'vendor/phpmailer/phpmailer/PHPMailerAutoload.php';
 
define ('LOGFILE','log.txt');
  
$mail = new PHPMailer();
$mail->isSMTP();

// Basico

$mail->Host        "xxxxxxxxxxxxxxxxxxx";
$mail->Username    "xxxxxx@servidor_b.com";
$mail->Password    "xxxxxxxxxxx";
$mail->Port        465;
$mail->SMTPAuth    true;
$mail->SMTPSecure  'ssl'
$mail->DKIM_domain '127.0.0.1';

// Otras opciones

$mail->CharSet 'UTF-8';
$mail->SMTPDebug   2;
$mail->Debugoutput 'html';

/* 
 From:
 */
$mail->setFrom($_REQUEST['from_email'], $_REQUEST['from_name']);
//$mail->addReplyTo('replyto@example.com', 'First Last');

/*
 To:
 */
$mail->addAddress($_REQUEST['to_email'], $_REQUEST['to_name']);

/*
 Mensaje
 */

$mail->Subject $_REQUEST['subject'];
//$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$mail->msgHTML($_REQUEST['msg']); 
//$mail->AltBody = 'Mensaje de prueba tipo plain-text';
//$mail->addAttachment('images/phpmailer_mini.png');
 

if (!$mail->send())
{    
   
logErrors("Mailer Error: " $mail->ErrorInfo);
}

function 
logErrors($msg){
    
file_put_contents(LOGFILE,$msg.PHP_EOL,FILE_APPEND LOCK_EX);    


Como se puede ver utilizarias PHPMailer, toca lo instales en el "servidor b" Smile

PD: la configuracion del correo deberias moverla a tu config.php tambien, toca hacerle mejoras pero funciona
 
Reply
  


Salto de foro:


Browsing: 1 invitado(s)