Foros del Web » Programando para Internet » PHP »

envio de email por SMTP

Estas en el tema de envio de email por SMTP en el foro de PHP en Foros del Web. hola a todos, estoy intentando implementar en un sitio web montado en un hosting gratuito (byethost) el enviar un email de bienvenida al que se ...
  #1 (permalink)  
Antiguo 19/03/2011, 12:34
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Pregunta envio de email por SMTP

hola a todos, estoy intentando implementar en un sitio web montado en un hosting gratuito (byethost) el enviar un email de bienvenida al que se registre por medio de gmail.
Encontre una funcion para enviarlo por SMTP pero no eh podido configurar la parte del Servidor de Email, la cual es esta:

Código PHP:
$smtpServer ‘www.tuservidordemail.com’;
$port ‘25′;
$timeout ‘60′;
$username ‘tunombreusuario’;
$password ‘tupassword’;
$localhost ‘www.tudominio.com’;
$newLine “rn”
yo la edite quedando de esta forma pero sin lograr que funcionara :S

Código PHP:
    $smtpServer  'ssl://smtp.googlemail.com'
    
$port        '465';
    
$timeout     '60';
    
$username    '[email protected]';
    
$password    'contrasena123456';
    
$localhost   'sql201.byethost52.com'
    
$newLine     "\r\n"
investige que gmail usa el puerto 465 por eso lo cambie, pero ni con ese ni con el 25 logre que se enviara el correo, espero pudieras decirme en que me equivoque y como podria solucionarlo.
Dejo la funcion completa como la encontre en la red por si no me di a entender bien XD

Código PHP:
/**
 * Esta funcion permite enviar un email en formato:
 * texto o html por protocolo SMTP.
 *
 * Auto: Edwin Sandoval < contacto [at] perfilgeek.com >
 *
 * @param String $format
 * @return boolean
 */
 
function mailporsmtp$mail_from    '',
                    
$mail_to      '',
                    
$mail_cc      '',
                    
$mail_bcc     '',
                    
$mail_subject '',
                    
$mail_data    '',
                    
$mail_format  'text' ){
 
    
$smtpServer  'www.tuservidordemail.com';
    
$port        '25';
    
$timeout     '60';
    
$username    'tunombreusuario';
    
$password    'tupassword';
    
$localhost   'www.tudominio.com';
    
$newLine     "\r\n";
 
    
$conexionsmtp fsockopen$smtpServer$port$errno$errstr$timeout );
 
    
fputs$conexionsmtp,' AUTH LOGIN'.$newLine );
    
fputs$conexionsmtp,  base64_encode$username ) . $newLine   );
    
fputs$conexionsmtp,  base64_encode$password ) . $newLine   );
    
fputs$conexionsmtp'HELO '       $localhost  $newLine    );
    
fputs$conexionsmtp'MAIL FROM: ' $mail_from  $newLine    );
    
fputs$conexionsmtp'RCPT TO: '   $mail_to    $newLine    );
 
    if( !empty( 
$mail_cc ) ){
        
fputs$conexionsmtp'RCPT TO: '   $mail_cc   $newLine    );
    }
 
    if( !empty( 
$mail_bcc ) ){
        
fputs$conexionsmtp'RCPT TO: '   $mail_bcc  $newLine    );
    }
 
    
fputs$conexionsmtp'DATA'            $newLine                  );
 
    
fflush$conexionsmtp );
 
    
$raw  "";
    
$raw  = @fread$conexionsmtp255 );
    
$raw .= @fread$conexionsmtp255 );
 
    
fputs$conexionsmtp'To:     '  $mail_to        $newLine );
    
fputs$conexionsmtp'From:   <' $mail_from .'>' $newLine );
    
fputs$conexionsmtp'Subject:'  $mail_subject   $newLine );
 
    if( 
$mail_format == 'text' ){
 
        
$headers  "Content-Type: text/plain; charset=\"iso-8859-1\"" "\r\n";
        
$headers .= "Content-Transfer-Encoding: 7bit" "\r\n";
 
        
$message  $mail_data;
 
        
fputs$conexionsmtp$headers   $newLine  $newLine       );
        
fputs$conexionsmtp$message   $newLine  '.' $newLine );
 
    }else{
 
        
$random_hash md5(date('r'time()));
 
        
$headers  "Content-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"\r\n";
        
$headers .= "--PHP-alt-" $random_hash "\r\n";
        
$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"" "\r\n";
        
$headers .= "Content-Transfer-Encoding: 7bit" "\r\n";
 
        
$message  $mail_data[0];
 
        
fputs$conexionsmtp$headers $newLine );
        
fputs$conexionsmtp$message $newLine );
 
        
$headers  "--PHP-alt-" $random_hash "\r\n";
        
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"" "\r\n";
        
$headers .= "Content-Transfer-Encoding: 7bit" "\r\n";
 
        
$message  $mail_data[1];
 
        
fputs$conexionsmtp$headers  $newLine );
        
fputs$conexionsmtp$message  $newLine );
 
        
$headers  "--PHP-alt-" $random_hash "--\r\n";
 
        
fputs$conexionsmtp$headers '.' $newLine  );
 
    }
 
    
fputs$conexionsmtp,'QUIT' $newLine );
 
    return 
true;
 

Para operar esta función deberemos pasarle los siguientes parámetros:

Código PHP:
$mail_from    '' // Dirección de Correo Remitente
$mail_to      '' // Dirección de Correo Destinatario
$mail_cc      '' // Dirección de Correo Destinatario
$mail_bcc     '' // Dirección de Correo Destinatario
$mail_subject '' // Asunto del Mensaje
$mail_data    '' // Texto Plano o un Array ( $mail_data[0] = 'texto plano'; $mail_data[1] = '<p>html mail</p>'; )
$mail_format  'text' // Formato del Email ( text o html ) 
  #2 (permalink)  
Antiguo 19/03/2011, 13:05
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: envio de email por SMTP

haz que te imprima $errstr para ver que error marca

puedes ver un poco mas del funcionamiento de fsockopen

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 19/03/2011, 13:23
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: envio de email por SMTP

hola gracias por tu respuesta, la variable $errstr me arrojo "Connection timed out" leere eso que comentas, no se nada al respecto de ese tema :S
  #4 (permalink)  
Antiguo 19/03/2011, 13:30
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: envio de email por SMTP

yo al igual que tu, ando en cero en esa parte del tema, pero creo que es algún problemilla con los datos de tu conexión.

espero te ayude lo que te dije que leas y suerte.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 19/03/2011, 13:48
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: envio de email por SMTP

ok, igual si alguien sabe otra forma distinta de enviar el e-mail agradecería mucho si la pudieran compartir como hacerlo
  #6 (permalink)  
Antiguo 19/03/2011, 14:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: envio de email por SMTP

PHPMailer
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 19/03/2011, 19:13
Avatar de guichogdl  
Fecha de Ingreso: abril-2010
Ubicación: gdl
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: envio de email por SMTP

gracias por tu respuesta! ya descarge ese paquete y lo intente hacer funcionar pero no tuve exito :S al querer enviar un correo me lanza este mensaje:

Error: Language string failed to load: connect_host

no encuentro cual es el error :S el correo que pongo es el correcto igual la contraseña, no se donde esta el error.. aqui dejo el codigo que uso:

Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once 'class.phpmailer.php';
  4.  
  5. $mail = new PHPMailer ();
  6.  
  7. $mail -> From = "[email protected]";
  8. $mail -> FromName = "wuiz";
  9. $mail -> AddAddress ("[email protected]");
  10. $mail -> Subject = "Test";
  11. $mail -> Body = "<h3>From GMail!</h3>";
  12. $mail -> IsHTML (true);
  13.  
  14. $mail->IsSMTP();
  15. $mail->Host = 'ssl://smtp.gmail.com';
  16. $mail->Port = 465;
  17. $mail->SMTPAuth = true;
  18. $mail->Username = '[email protected]';
  19. $mail->Password = 'contrasena';
  20.  
  21. if(!$mail->Send()) {
  22.     echo 'Error: ' . $mail->ErrorInfo;
  23. }
  24. else {
  25. echo 'Mail enviado!';
  26. }
  27.  
  28. ?>


agradezco de antemano si me pueden apoyar con esto
  #8 (permalink)  
Antiguo 20/03/2011, 09:47
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: envio de email por SMTP

Supongo que sabras traducir el error: "Error de conexión al servidor"

Código PHP:
Ver original
  1. $mail->Host = 'ssl://smtp.gmail.com';
Intenta poniendolo así...
Código PHP:
Ver original
  1. $mail->Host = 'smtp.gmail.com';

Lo que te pide es el servidor, el servidor es algo.com o aveces algo.otroalgo.com (el com tambien puede cambiar )
Debe haber alguna parte que te diga si es una conexión ssl o tls o ninguna... busca haber recuerdo haberlo usado pero nada... no se como lo solucione, solo se que funcionaba (probado con gmail)

Tengo que agregarlo a mi proyecto actual así k en cuanto lo ponga y me funcione te digo como est

Buena suerte...

Etiquetas: correo, gmail, smpt
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 01:09.