Foros del Web » Programando para Internet » PHP »

Error con phpmailer y gmail

Estas en el tema de Error con phpmailer y gmail en el foro de PHP en Foros del Web. Hace 2 dias dejo de funcionar mi script phpmailer de envio de correo usando gmail, no toque nada del codigo ni lo cambie ni nada ...
  #1 (permalink)  
Antiguo 31/05/2009, 09:38
Avatar de hanscruz  
Fecha de Ingreso: junio-2005
Mensajes: 278
Antigüedad: 21 años, 3 meses
Puntos: 0
Error con phpmailer y gmail

Hace 2 dias dejo de funcionar mi script phpmailer de envio de correo usando gmail, no toque nada del codigo ni lo cambie ni nada simplemente dejor de funcionar, ya llevo buscando mucho rato una solucion pero no doy con ella ya que todo mi codigo esta correcto.

Sin embargo encontre un post en donde decian que el port de gamil era antes 25 y ahora lo cambiaron a 465 que es el que actualmente yo uso, y se me ocurrio que talves sea que nuevamente lo cambiaron pero no encuentro informacion al respecto talves a alguein le paso, quisiera saber si siguen usando gmail sin problemas con el puerto 465?

El error que me da es:

Código:
Language string failed to load: connect_host
Les repito que no toque nada y dejo de funcionar solo hace 2 dias, ademas de que la cuenta de gmail esta bien ya que puedo entrar por web de forma normal.

Espero sus respuestas gracias de antemano.
__________________
:policia:
  #2 (permalink)  
Antiguo 31/05/2009, 11:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 17 años, 4 meses
Puntos: 1517
Respuesta: Error con phpmailer y gmail

Trata con el puerto 587

Fui directamente a gmail y busque por smtp en un campo que decia
Buscar en el Centro de asistencia de Gmail
Puedes ir aqui para ver estas instrucciones
http://mail.google.com/support/bin/a...s&answer=77662
  #3 (permalink)  
Antiguo 01/06/2009, 10:50
Avatar de hanscruz  
Fecha de Ingreso: junio-2005
Mensajes: 278
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Error con phpmailer y gmail

Muchas Gracias Amigo la solucion no fue la que me diste pero la encontre ahi mismo.

Por alguna razon con ssl ya no me funcionaba lo cambie a tls y funciono perfectamente espero esto les ayude a otros que choquen con el mismo error.

Gracias nuevamente.
__________________
:policia:
  #4 (permalink)  
Antiguo 10/06/2009, 05:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

hola!

yo estoy ahora intentando enviar un mail con gmail y me pasa lo mismo que a tí...
cómo lo has solucionado???
  #5 (permalink)  
Antiguo 10/06/2009, 05:54
Avatar de danielrivas  
Fecha de Ingreso: noviembre-2007
Ubicación: Preprocessing
Mensajes: 275
Antigüedad: 18 años, 10 meses
Puntos: 6
Respuesta: Error con phpmailer y gmail

Cita:
Iniciado por hanscruz Ver Mensaje
Muchas Gracias Amigo la solucion no fue la que me diste pero la encontre ahi mismo.

Por alguna razon con ssl ya no me funcionaba lo cambie a tls y funciono perfectamente espero esto les ayude a otros que choquen con el mismo error.

Gracias nuevamente.
  #6 (permalink)  
Antiguo 10/06/2009, 06:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

ya, pero cómo se hace? he estado mirando la página pero no sé q hay que poner en el código...
  #7 (permalink)  
Antiguo 10/06/2009, 09:25
Avatar de danielrivas  
Fecha de Ingreso: noviembre-2007
Ubicación: Preprocessing
Mensajes: 275
Antigüedad: 18 años, 10 meses
Puntos: 6
Respuesta: Error con phpmailer y gmail

Class PHPMailer

string $SMTPSecure = '' (line 199)

Sets connection prefix.

Options are "", "ssl" or "tls"

* access: public
  #8 (permalink)  
Antiguo 11/06/2009, 03:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Me sale el error:

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\xampp\htdocs\Proyecto web\class.phpmailer.php on line 197

Y si lo dejo como lo tengo yo me sale:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\xampp\htdocs\Proyecto web\class.smtp.php on line 122
Error: Language string failed to load: connect_host

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ AYUDA !!!!!!!!!!!!!!!!!!!!!!!!!

Última edición por una_xikilla; 11/06/2009 a las 04:25
  #9 (permalink)  
Antiguo 23/06/2009, 18:32
Avatar de hanscruz  
Fecha de Ingreso: junio-2005
Mensajes: 278
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Error con phpmailer y gmail

Si aun no lo solucionaste postea tu codigo de phpmailer y te dire donde va el cambio.
__________________
:policia:
  #10 (permalink)  
Antiguo 24/06/2009, 03:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
<? class PHPMailer {

   var 
$Priority          = 3;

    var 
$CharSet           = 'iso-8859-1';

    var 
$ContentType        = 'text/plain';

    var 
$Encoding          = '8bit';

    var 
$ErrorInfo         = '';

    var 
$From              = 'root@localhost';

 var 
$FromName          = 'Root User';

   var 
$Sender            = '';

    var 
$Subject           = '';

    var 
$Body              = '';

    var 
$AltBody           = '';

  var 
$WordWrap          = 0;

  var 
$Mailer            = 'mail';

   var 
$Sendmail          = '/usr/sbin/sendmail';

    var 
$PluginDir         = '';

    var 
$Version           = "2.0.2";

    var 
$ConfirmReadingTo  = '';

    var 
$Hostname          = '';

    var 
$MessageID         = '';

    var 
$Host        = 'localhost';

    var 
$Port        = 25;

    var 
$Helo        = '';

    var 
$SMTPSecure = "";

    var 
$SMTPAuth     = false;

    var 
$Username     = '';

   var 
$Password     = '';

   var 
$Timeout      = 10;

   var 
$SMTPDebug    = false;

   var 
$SMTPKeepAlive = false;

   var 
$SingleTo = false;

  var 
$smtp            = NULL;
  var 
$to              = array();
  var 
$cc              = array();
  var 
$bcc             = array();
  var 
$ReplyTo         = array();
  var 
$attachment      = array();
  var 
$CustomHeader    = array();
  var 
$message_type    = '';
  var 
$boundary        = array();
  var 
$language        = array();
  var 
$error_count     = 0;
  var 
$LE              = "\n";
  var 
$sign_key_file   = "";
  var 
$sign_key_pass   = "";

   function 
IsHTML($bool) {
    if(
$bool == true) {
      
$this->ContentType = 'text/html';
    } else {
      
$this->ContentType = 'text/plain';
    }
  }

   function 
IsSMTP() {
    
$this->Mailer = 'smtp';
  }

    function 
IsMail() {
    
$this->Mailer = 'mail';
  }

   function 
IsSendmail() {
    
$this->Mailer = 'sendmail';
  }

   function 
IsQmail() {
    
$this->Sendmail = '/var/qmail/bin/sendmail';
    
$this->Mailer = 'sendmail';
  }

  function 
AddAddress($address, $name = '') {
    
$cur = count($this->to);
    
$this->to[$cur][0] = trim($address);
    
$this->to[$cur][1] = $name;
  }

   function 
AddCC($address, $name = '') {
    
$cur = count($this->cc);
    
$this->cc[$cur][0] = trim($address);
    
$this->cc[$cur][1] = $name;
  }

    function 
AddBCC($address, $name = '') {
    
$cur = count($this->bcc);
    
$this->bcc[$cur][0] = trim($address);
    
$this->bcc[$cur][1] = $name;
  }

   function 
AddReplyTo($address, $name = '') {
    
$cur = count($this->ReplyTo);
    
$this->ReplyTo[$cur][0] = trim($address);
    
$this->ReplyTo[$cur][1] = $name;
  }

  function 
Send() {
    
$header = '';
    
$body = '';
    
$result = true;

    if((
count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
      
$this->SetError($this->Lang('provide_address'));
      return 
false;
    }

    
/* Set whether the message is multipart/alternative */
    
if(!empty($this->AltBody)) {
      
$this->ContentType = 'multipart/alternative';
    }

    
$this->error_count = 0; // reset errors
    
$this->SetMessageType();
    
$header .= $this->CreateHeader();
    
$body = $this->CreateBody();

    if(
$body == '') {
      return 
false;
    }

    
/* Choose the mailer */
    
switch($this->Mailer) {
      case 
'sendmail':
        
$result = $this->SendmailSend($header, $body);
        break;
      case 
'smtp':
        
$result = $this->SmtpSend($header, $body);
        break;
      case 
'mail':
        
$result = $this->MailSend($header, $body);
        break;
      default:
        
$result = $this->MailSend($header, $body);
        break;
        
//$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
        //$result = false;
        //break;
    
}

    return 
$result;
  }
  #11 (permalink)  
Antiguo 24/06/2009, 03:43
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
function SendmailSend($header, $body) {
    if (
$this->Sender != '') {
      
$sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
    } else {
      
$sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
    }

    if(!@
$mail = popen($sendmail, 'w')) {
      
$this->SetError($this->Lang('execute') . $this->Sendmail);
      return 
false;
    }

    
fputs($mail, $header);
    
fputs($mail, $body);

    
$result = pclose($mail);
    if (
version_compare(phpversion(), '4.2.3') == -1) {
      
$result = $result >> 8 & 0xFF;
    }
    if(
$result != 0) {
      
$this->SetError($this->Lang('execute') . $this->Sendmail);
      return 
false;
    }
    return 
true;
  }

  function 
MailSend($header, $body) {

    
$to = '';
    for(
$i = 0; $i < count($this->to); $i++) {
      if(
$i != 0) { $to .= ', '; }
      
$to .= $this->AddrFormat($this->to[$i]);
    }

    
$toArr = split(',', $to);

    
$params = sprintf("-oi -f %s", $this->Sender);
    if (
$this->Sender != '' && strlen(ini_get('safe_mode')) < 1) {
      
$old_from = ini_get('sendmail_from');
      
ini_set('sendmail_from', $this->Sender);
      if (
$this->SingleTo === true && count($toArr) > 1) {
        foreach (
$toArr as $key => $val) {
          
$rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
        }
      } else {
        
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
      }
    } else {
      if (
$this->SingleTo === true && count($toArr) > 1) {
        foreach (
$toArr as $key => $val) {
          
$rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
        }
      } else {
        
$rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
      }
    }

    if (isset(
$old_from)) {
      
ini_set('sendmail_from', $old_from);
    }

    if(!
$rt) {
      
$this->SetError($this->Lang('instantiate'));
      return 
false;
    }

    return 
true;
  }

  function 
SmtpSend($header, $body) {
    include_once(
$this->PluginDir . 'class.smtp.php');
    
$error = '';
    
$bad_rcpt = array();

    if(!
$this->SmtpConnect()) {
      return 
false;
    }

    
$smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
    if(!
$this->smtp->Mail($smtp_from)) {
      
$error = $this->Lang('from_failed') . $smtp_from;
      
$this->SetError($error);
      
$this->smtp->Reset();
      return 
false;
    }

    
/* Attempt to send attach all recipients */
    
for($i = 0; $i < count($this->to); $i++) {
      if(!
$this->smtp->Recipient($this->to[$i][0])) {
        
$bad_rcpt[] = $this->to[$i][0];
      }
    }
    for(
$i = 0; $i < count($this->cc); $i++) {
      if(!
$this->smtp->Recipient($this->cc[$i][0])) {
        
$bad_rcpt[] = $this->cc[$i][0];
      }
    }
    for(
$i = 0; $i < count($this->bcc); $i++) {
      if(!
$this->smtp->Recipient($this->bcc[$i][0])) {
        
$bad_rcpt[] = $this->bcc[$i][0];
      }
    }

    if(
count($bad_rcpt) > 0) { // Create error message
      
for($i = 0; $i < count($bad_rcpt); $i++) {
        if(
$i != 0) {
          
$error .= ', ';
        }
        
$error .= $bad_rcpt[$i];
      }
      
$error = $this->Lang('recipients_failed') . $error;
      
$this->SetError($error);
      
$this->smtp->Reset();
      return 
false;
    }

    if(!
$this->smtp->Data($header . $body)) {
      
$this->SetError($this->Lang('data_not_accepted'));
      
$this->smtp->Reset();
      return 
false;
    }
    if(
$this->SMTPKeepAlive == true) {
      
$this->smtp->Reset();
    } else {
      
$this->SmtpClose();
    }

    return 
true;
  }

  function 
SmtpConnect() {
    if(
$this->smtp == NULL) {
      
$this->smtp = new SMTP();
    }

    
$this->smtp->do_debug = $this->SMTPDebug;
    
$hosts = explode(';', $this->Host);
    
$index = 0;
    
$connection = ($this->smtp->Connected());

    
/* Retry while there is no connection */
    
while($index < count($hosts) && $connection == false) {
      
$hostinfo = array();
      if(
eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
        
$host = $hostinfo[1];
        
$port = $hostinfo[2];
      } else {
        
$host = $hosts[$index];
        
$port = $this->Port;
      }

      if(
$this->smtp->Connect(((!empty($this->SMTPSecure))?$this->SMTPSecure.'://':'').$host, $port, $this->Timeout)) {
        if (
$this->Helo != '') {
          
$this->smtp->Hello($this->Helo);
        } else {
          
$this->smtp->Hello($this->ServerHostname());
        }

        
$connection = true;
        if(
$this->SMTPAuth) {
          if(!
$this->smtp->Authenticate($this->Username, $this->Password)) {
            
$this->SetError($this->Lang('authenticate'));
            
$this->smtp->Reset();
            
$connection = false;
          }
        }
      }
      
$index++;
    }
    if(!
$connection) {
      
$this->SetError($this->Lang('connect_host'));
    }

    return 
$connection;
  } 
  #12 (permalink)  
Antiguo 24/06/2009, 03:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
function SmtpClose() {
    if(
$this->smtp != NULL) {
      if(
$this->smtp->Connected()) {
        
$this->smtp->Quit();
        
$this->smtp->Close();
      }
    }
  }

  function 
SetLanguage($lang_type, $lang_path = 'language/') {
    if(
file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) {
      include(
$lang_path.'phpmailer.lang-'.$lang_type.'.php');
    } elseif (
file_exists($lang_path.'phpmailer.lang-en.php')) {
      include(
$lang_path.'phpmailer.lang-en.php');
    } else {
      
$this->SetError('Could not load language file');
      return 
false;
    }
    
$this->language = $PHPMAILER_LANG;

    return 
true;
  }

  function 
AddrAppend($type, $addr) {
    
$addr_str = $type . ': ';
    
$addr_str .= $this->AddrFormat($addr[0]);
    if(
count($addr) > 1) {
      for(
$i = 1; $i < count($addr); $i++) {
        
$addr_str .= ', ' . $this->AddrFormat($addr[$i]);
      }
    }
    
$addr_str .= $this->LE;

    return 
$addr_str;
  }

  function 
AddrFormat($addr) {
    if(empty(
$addr[1])) {
      
$formatted = $this->SecureHeader($addr[0]);
    } else {
      
$formatted = $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">";
    }

    return 
$formatted;
  }

 function 
WrapText($message, $length, $qp_mode = false) {
    
$soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
    
// If utf-8 encoding is used, we will need to make sure we don't
    // split multibyte characters when we wrap
    
$is_utf8 = (strtolower($this->CharSet) == "utf-8");

    
$message = $this->FixEOL($message);
    if (
substr($message, -1) == $this->LE) {
      
$message = substr($message, 0, -1);
    }

    
$line = explode($this->LE, $message);
    
$message = '';
    for (
$i=0 ;$i < count($line); $i++) {
      
$line_part = explode(' ', $line[$i]);
      
$buf = '';
      for (
$e = 0; $e<count($line_part); $e++) {
        
$word = $line_part[$e];
        if (
$qp_mode and (strlen($word) > $length)) {
          
$space_left = $length - strlen($buf) - 1;
          if (
$e != 0) {
            if (
$space_left > 20) {
              
$len = $space_left;
              if (
$is_utf8) {
                
$len = $this->UTF8CharBoundary($word, $len);
              } elseif (
substr($word, $len - 1, 1) == "=") {
                
$len--;
              } elseif (
substr($word, $len - 2, 1) == "=") {
                
$len -= 2;
              }
              
$part = substr($word, 0, $len);
              
$word = substr($word, $len);
              
$buf .= ' ' . $part;
              
$message .= $buf . sprintf("=%s", $this->LE);
            } else {
              
$message .= $buf . $soft_break;
            }
            
$buf = '';
          }
          while (
strlen($word) > 0) {
            
$len = $length;
            if (
$is_utf8) {
              
$len = $this->UTF8CharBoundary($word, $len);
            } elseif (
substr($word, $len - 1, 1) == "=") {
              
$len--;
            } elseif (
substr($word, $len - 2, 1) == "=") {
              
$len -= 2;
            }
            
$part = substr($word, 0, $len);
            
$word = substr($word, $len);

            if (
strlen($word) > 0) {
              
$message .= $part . sprintf("=%s", $this->LE);
            } else {
              
$buf = $part;
            }
          }
        } else {
          
$buf_o = $buf;
          
$buf .= ($e == 0) ? $word : (' ' . $word);

          if (
strlen($buf) > $length and $buf_o != '') {
            
$message .= $buf_o . $soft_break;
            
$buf = $word;
          }
        }
      }
      
$message .= $buf . $this->LE;
    }

    return 
$message;
  }

  function 
UTF8CharBoundary($encodedText, $maxLength) {
    
$foundSplitPos = false;
    
$lookBack = 3;
    while (!
$foundSplitPos) {
      
$lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
      
$encodedCharPos = strpos($lastChunk, "=");
      if (
$encodedCharPos !== false) {
        
// Found start of encoded character byte within $lookBack block.
        // Check the encoded byte value (the 2 chars after the '=')
        
$hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
        
$dec = hexdec($hex);
        if (
$dec < 128) { // Single byte character.
          // If the encoded char was found at pos 0, it will fit
          // otherwise reduce maxLength to start of the encoded char
          
$maxLength = ($encodedCharPos == 0) ? $maxLength :
          
$maxLength - ($lookBack - $encodedCharPos);
          
$foundSplitPos = true;
        } elseif (
$dec >= 192) { // First byte of a multi byte character
          // Reduce maxLength to split at start of character
          
$maxLength = $maxLength - ($lookBack - $encodedCharPos);
          
$foundSplitPos = true;
        } elseif (
$dec < 192) { // Middle byte of a multi byte character, look further back
          
$lookBack += 3;
        }
      } else {
        
// No encoded character found
        
$foundSplitPos = true;
      }
    }
    return 
$maxLength;
  }

  function 
SetWordWrap() {
    if(
$this->WordWrap < 1) {
      return;
    }

    switch(
$this->message_type) {
      case 
'alt':
        
/* fall through */
      
case 'alt_attachments':
        
$this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
        break;
      default:
        
$this->Body = $this->WrapText($this->Body, $this->WordWrap);
        break;
    }
  }

  function 
CreateHeader() {
    
$result = '';

    
/* Set the boundaries */
    
$uniq_id = md5(uniqid(time()));
    
$this->boundary[1] = 'b1_' . $uniq_id;
    
$this->boundary[2] = 'b2_' . $uniq_id;

    
$result .= $this->HeaderLine('Date', $this->RFCDate());
    if(
$this->Sender == '') {
      
$result .= $this->HeaderLine('Return-Path', trim($this->From));
    } else {
      
$result .= $this->HeaderLine('Return-Path', trim($this->Sender));
    }

    
/* To be created automatically by mail() */
    
if($this->Mailer != 'mail') {
      if(
count($this->to) > 0) {
        
$result .= $this->AddrAppend('To', $this->to);
      } elseif (
count($this->cc) == 0) {
        
$result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
      }
      if(
count($this->cc) > 0) {
        
$result .= $this->AddrAppend('Cc', $this->cc);
      }
    }

    
$from = array();
    
$from[0][0] = trim($this->From);
    
$from[0][1] = $this->FromName;
    
$result .= $this->AddrAppend('From', $from);

    
/* sendmail and mail() extract Cc from the header before sending */
    
if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->cc) > 0)) {
      
$result .= $this->AddrAppend('Cc', $this->cc);
    }

    
/* sendmail and mail() extract Bcc from the header before sending */
    
if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
      
$result .= $this->AddrAppend('Bcc', $this->bcc);
    }

    if(
count($this->ReplyTo) > 0) {
      
$result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
    }

    
/* mail() sets the subject itself */
    
if($this->Mailer != 'mail') {
      
$result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject)));
    }

    if(
$this->MessageID != '') {
      
$result .= $this->HeaderLine('Message-ID',$this->MessageID);
    } else {
      
$result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
    }
    
$result .= $this->HeaderLine('X-Priority', $this->Priority);
    
$result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']');

    if(
$this->ConfirmReadingTo != '') {
      
$result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
    }

    
// Add custom headers
    
for($index = 0; $index < count($this->CustomHeader); $index++) {
      
$result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
    }
    if (!
$this->sign_key_file) {
      
$result .= $this->HeaderLine('MIME-Version', '1.0');
      
$result .= $this->GetMailMIME();
    }

    return 
$result;
  }

  function 
GetMailMIME() {
    
$result = '';
    switch(
$this->message_type) {
      case 
'plain':
        
$result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding);
        
$result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet);
        break;
      case 
'attachments':
        
/* fall through */
      
case 'alt_attachments':
        if(
$this->InlineImageExists()){
          
$result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->LE, $this->LE, $this->boundary[1], $this->LE);
        } else {
          
$result .= $this->HeaderLine('Content-Type', 'multipart/mixed;');
          
$result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
        }
        break;
      case 
'alt':
        
$result .= $this->HeaderLine('Content-Type', 'multipart/alternative;');
        
$result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
        break;
    }

    if(
$this->Mailer != 'mail') {
      
$result .= $this->LE.$this->LE;
    }

    return 
$result;
  } 
  #13 (permalink)  
Antiguo 24/06/2009, 03:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
function CreateBody() {
    
$result = '';
    if (
$this->sign_key_file) {
      
$result .= $this->GetMailMIME();
    }

    
$this->SetWordWrap();

    switch(
$this->message_type) {
      case 
'alt':
        
$result .= $this->GetBoundary($this->boundary[1], '', 'text/plain', '');
        
$result .= $this->EncodeString($this->AltBody, $this->Encoding);
        
$result .= $this->LE.$this->LE;
        
$result .= $this->GetBoundary($this->boundary[1], '', 'text/html', '');
        
$result .= $this->EncodeString($this->Body, $this->Encoding);
        
$result .= $this->LE.$this->LE;
        
$result .= $this->EndBoundary($this->boundary[1]);
        break;
      case 
'plain':
        
$result .= $this->EncodeString($this->Body, $this->Encoding);
        break;
      case 
'attachments':
        
$result .= $this->GetBoundary($this->boundary[1], '', '', '');
        
$result .= $this->EncodeString($this->Body, $this->Encoding);
        
$result .= $this->LE;
        
$result .= $this->AttachAll();
        break;
      case 
'alt_attachments':
        
$result .= sprintf("--%s%s", $this->boundary[1], $this->LE);
        
$result .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->LE, $this->boundary[2], $this->LE.$this->LE);
        
$result .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '') . $this->LE; // Create text body
        
$result .= $this->EncodeString($this->AltBody, $this->Encoding);
        
$result .= $this->LE.$this->LE;
        
$result .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body
        
$result .= $this->EncodeString($this->Body, $this->Encoding);
        
$result .= $this->LE.$this->LE;
        
$result .= $this->EndBoundary($this->boundary[2]);
        
$result .= $this->AttachAll();
        break;
    }

    if(
$this->IsError()) {
      
$result = '';
    } else if (
$this->sign_key_file) {
      
$file = tempnam("", "mail");
      
$fp = fopen($file, "w");
      
fwrite($fp, $result);
      
fclose($fp);
      
$signed = tempnam("", "signed");

      if (@
openssl_pkcs7_sign($file, $signed, "file://".$this->sign_key_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
        
$fp = fopen($signed, "r");
        
$result = fread($fp, filesize($this->sign_key_file));
        
fclose($fp);
      } else {
        
$this->SetError($this->Lang("signing").openssl_error_string());
        
$result = '';
      }

      
unlink($file);
      
unlink($signed);
    }

    return 
$result;
  }

 function 
GetBoundary($boundary, $charSet, $contentType, $encoding) {
    
$result = '';
    if(
$charSet == '') {
      
$charSet = $this->CharSet;
    }
    if(
$contentType == '') {
      
$contentType = $this->ContentType;
    }
    if(
$encoding == '') {
      
$encoding = $this->Encoding;
    }
    
$result .= $this->TextLine('--' . $boundary);
    
$result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet);
    
$result .= $this->LE;
    
$result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding);
    
$result .= $this->LE;

    return 
$result;
  }

 function 
EndBoundary($boundary) {
    return 
$this->LE . '--' . $boundary . '--' . $this->LE;
  }

  function 
SetMessageType() {
    if(
count($this->attachment) < 1 && strlen($this->AltBody) < 1) {
      
$this->message_type = 'plain';
    } else {
      if(
count($this->attachment) > 0) {
        
$this->message_type = 'attachments';
      }
      if(
strlen($this->AltBody) > 0 && count($this->attachment) < 1) {
        
$this->message_type = 'alt';
      }
      if(
strlen($this->AltBody) > 0 && count($this->attachment) > 0) {
        
$this->message_type = 'alt_attachments';
      }
    }
  }

  function 
HeaderLine($name, $value) {
    return 
$name . ': ' . $value . $this->LE;
  }

  function 
TextLine($value) {
    return 
$value . $this->LE;
  }

 function 
AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
    if(!@
is_file($path)) {
      
$this->SetError($this->Lang('file_access') . $path);
      return 
false;
    }

    
$filename = basename($path);
    if(
$name == '') {
      
$name = $filename;
    }

    
$cur = count($this->attachment);
    
$this->attachment[$cur][0] = $path;
    
$this->attachment[$cur][1] = $filename;
    
$this->attachment[$cur][2] = $name;
    
$this->attachment[$cur][3] = $encoding;
    
$this->attachment[$cur][4] = $type;
    
$this->attachment[$cur][5] = false; // isStringAttachment
    
$this->attachment[$cur][6] = 'attachment';
    
$this->attachment[$cur][7] = 0;

    return 
true;
  }

 function 
AttachAll() {
    
/* Return text of body */
    
$mime = array();

    
/* Add all attachments */
    
for($i = 0; $i < count($this->attachment); $i++) {
      
/* Check for string attachment */
      
$bString = $this->attachment[$i][5];
      if (
$bString) {
        
$string = $this->attachment[$i][0];
      } else {
        
$path = $this->attachment[$i][0];
      }

      
$filename    = $this->attachment[$i][1];
      
$name        = $this->attachment[$i][2];
      
$encoding    = $this->attachment[$i][3];
      
$type        = $this->attachment[$i][4];
      
$disposition = $this->attachment[$i][6];
      
$cid         = $this->attachment[$i][7];

      
$mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
      
$mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);
      
$mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);

      if(
$disposition == 'inline') {
        
$mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
      }

      
$mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $name, $this->LE.$this->LE);

      
/* Encode as string attachment */
      
if($bString) {
        
$mime[] = $this->EncodeString($string, $encoding);
        if(
$this->IsError()) {
          return 
'';
        }
        
$mime[] = $this->LE.$this->LE;
      } else {
        
$mime[] = $this->EncodeFile($path, $encoding);
        if(
$this->IsError()) {
          return 
'';
        }
        
$mime[] = $this->LE.$this->LE;
      }
    }

    
$mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);

    return 
join('', $mime);
  }

 function 
EncodeFile ($path, $encoding = 'base64') {
    if(!@
$fd = fopen($path, 'rb')) {
      
$this->SetError($this->Lang('file_open') . $path);
      return 
'';
    }
    
$magic_quotes = get_magic_quotes_runtime();
    
set_magic_quotes_runtime(0);
    
$file_buffer = fread($fd, filesize($path));
    
$file_buffer = $this->EncodeString($file_buffer, $encoding);
    
fclose($fd);
    
set_magic_quotes_runtime($magic_quotes);

    return 
$file_buffer;
  }

 function 
EncodeString ($str, $encoding = 'base64') {
    
$encoded = '';
    switch(
strtolower($encoding)) {
      case 
'base64':
        
/* chunk_split is found in PHP >= 3.0.6 */
        
$encoded = chunk_split(base64_encode($str), 76, $this->LE);
        break;
      case 
'7bit':
      case 
'8bit':
        
$encoded = $this->FixEOL($str);
        if (
substr($encoded, -(strlen($this->LE))) != $this->LE)
          
$encoded .= $this->LE;
        break;
      case 
'binary':
        
$encoded = $str;
        break;
      case 
'quoted-printable':
        
$encoded = $this->EncodeQP($str);
        break;
      default:
        
$this->SetError($this->Lang('encoding') . $encoding);
        break;
    }
    return 
$encoded;
  }

  function 
EncodeHeader ($str, $position = 'text') {
    
$x = 0;

    switch (
strtolower($position)) {
      case 
'phrase':
        if (!
preg_match('/[\200-\377]/', $str)) {
          
/* Can't use addslashes as we don't know what value has magic_quotes_sybase. */
          
$encoded = addcslashes($str, "\0..\37\177\\\"");
          if ((
$str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
            return (
$encoded);
          } else {
            return (
"\"$encoded\"");
          }
        }
        
$x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
        break;
      case 
'comment':
        
$x = preg_match_all('/[()"]/', $str, $matches);
        
/* Fall-through */
      
case 'text':
      default:
        
$x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
        break;
    }

    if (
$x == 0) {
      return (
$str);
    }

    
$maxlen = 75 - 7 - strlen($this->CharSet);
    
/* Try to select the encoding which should produce the shortest output */
    
if (strlen($str)/3 < $x) {
      
$encoding = 'B';
      if (
function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
     
// Use a custom function which correctly encodes and wraps long
     // multibyte strings without breaking lines within a character
        
$encoded = $this->Base64EncodeWrapMB($str);
      } else {
        
$encoded = base64_encode($str);
        
$maxlen -= $maxlen % 4;
        
$encoded = trim(chunk_split($encoded, $maxlen, "\n"));
      }
    } else {
      
$encoding = 'Q';
      
$encoded = $this->EncodeQ($str, $position);
      
$encoded = $this->WrapText($encoded, $maxlen, true);
      
$encoded = str_replace('='.$this->LE, "\n", trim($encoded));
    }

    
$encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
    
$encoded = trim(str_replace("\n", $this->LE, $encoded));

    return 
$encoded;
  }

 function 
HasMultiBytes($str) {
    if (
function_exists('mb_strlen')) {
      return (
strlen($str) > mb_strlen($str, $this->CharSet));
    } else { 
// Assume no multibytes (we can't handle without mbstring functions anyway)
      
return False;
    }
  } 
  #14 (permalink)  
Antiguo 24/06/2009, 03:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
function Base64EncodeWrapMB($str) {
    
$start = "=?".$this->CharSet."?B?";
    
$end = "?=";
    
$encoded = "";

    
$mb_length = mb_strlen($str, $this->CharSet);
    
// Each line must have length <= 75, including $start and $end
    
$length = 75 - strlen($start) - strlen($end);
    
// Average multi-byte ratio
    
$ratio = $mb_length / strlen($str);
    
// Base64 has a 4:3 ratio
    
$offset = $avgLength = floor($length * $ratio * .75);

    for (
$i = 0; $i < $mb_length; $i += $offset) {
      
$lookBack = 0;

      do {
        
$offset = $avgLength - $lookBack;
        
$chunk = mb_substr($str, $i, $offset, $this->CharSet);
        
$chunk = base64_encode($chunk);
        
$lookBack++;
      }
      while (
strlen($chunk) > $length);

      
$encoded .= $chunk . $this->LE;
    }

    
// Chomp the last linefeed
    
$encoded = substr($encoded, 0, -strlen($this->LE));
    return 
$encoded;
  }

 function 
EncodeQP( $input = '', $line_max = 76, $space_conv = false ) {
    
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
    
$lines = preg_split('/(?:\r\n|\r|\n)/', $input);
    
$eol = "\r\n";
    
$escape = '=';
    
$output = '';
    while( list(, 
$line) = each($lines) ) {
      
$linlen = strlen($line);
      
$newline = '';
      for(
$i = 0; $i < $linlen; $i++) {
        
$c = substr( $line, $i, 1 );
        
$dec = ord( $c );
        if ( ( 
$i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
          
$c = '=2E';
        }
        if ( 
$dec == 32 ) {
          if ( 
$i == ( $linlen - 1 ) ) { // convert space at eol only
            
$c = '=20';
          } else if ( 
$space_conv ) {
            
$c = '=20';
          }
        } elseif ( (
$dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required
          
$h2 = floor($dec/16);
          
$h1 = floor($dec%16);
          
$c = $escape.$hex[$h2].$hex[$h1];
        }
        if ( (
strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted
          
$output .= $newline.$escape.$eol; //  soft line break; " =\r\n" is okay
          
$newline = '';
          
// check if newline first character will be point or not
          
if ( $dec == 46 ) {
            
$c = '=2E';
          }
        }
        
$newline .= $c;
      } 
// end of for
      
$output .= $newline.$eol;
    } 
// end of while
    
return trim($output);
  }

 function 
EncodeQ ($str, $position = 'text') {
    
/* There should not be any EOL in the string */
    
$encoded = preg_replace("[\r\n]", '', $str);

    switch (
strtolower($position)) {
      case 
'phrase':
        
$encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
        break;
      case 
'comment':
        
$encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
      case 
'text':
      default:
        
/* Replace every high ascii, control =, ? and _ characters */
        
$encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
              
"'='.sprintf('%02X', ord('\\1'))", $encoded);
        break;
    }

    
/* Replace every spaces to _ (more readable than =20) */
    
$encoded = str_replace(' ', '_', $encoded);

    return 
$encoded;
  }

  function 
AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {
    
/* Append to $attachment array */
    
$cur = count($this->attachment);
    
$this->attachment[$cur][0] = $string;
    
$this->attachment[$cur][1] = $filename;
    
$this->attachment[$cur][2] = $filename;
    
$this->attachment[$cur][3] = $encoding;
    
$this->attachment[$cur][4] = $type;
    
$this->attachment[$cur][5] = true; // isString
    
$this->attachment[$cur][6] = 'attachment';
    
$this->attachment[$cur][7] = 0;
  }

 function 
AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {

    if(!@
is_file($path)) {
      
$this->SetError($this->Lang('file_access') . $path);
      return 
false;
    }

    
$filename = basename($path);
    if(
$name == '') {
      
$name = $filename;
    }

    
/* Append to $attachment array */
    
$cur = count($this->attachment);
    
$this->attachment[$cur][0] = $path;
    
$this->attachment[$cur][1] = $filename;
    
$this->attachment[$cur][2] = $name;
    
$this->attachment[$cur][3] = $encoding;
    
$this->attachment[$cur][4] = $type;
    
$this->attachment[$cur][5] = false;
    
$this->attachment[$cur][6] = 'inline';
    
$this->attachment[$cur][7] = $cid;

    return 
true;
  }

  function 
InlineImageExists() {
    
$result = false;
    for(
$i = 0; $i < count($this->attachment); $i++) {
      if(
$this->attachment[$i][6] == 'inline') {
        
$result = true;
        break;
      }
    }

    return 
$result;
  }

 function 
ClearAddresses() {
    
$this->to = array();
  }

 function 
ClearCCs() {
    
$this->cc = array();
  }

  function 
ClearBCCs() {
    
$this->bcc = array();
  }

  function 
ClearReplyTos() {
    
$this->ReplyTo = array();
  }

 function 
ClearAllRecipients() {
    
$this->to = array();
    
$this->cc = array();
    
$this->bcc = array();
  }

 function 
ClearAttachments() {
    
$this->attachment = array();
  }

function 
ClearCustomHeaders() {
    
$this->CustomHeader = array();
  }

 function 
SetError($msg) {
    
$this->error_count++;
    
$this->ErrorInfo = $msg;
  }

  function 
RFCDate() {
    
$tz = date('Z');
    
$tzs = ($tz < 0) ? '-' : '+';
    
$tz = abs($tz);
    
$tz = (int)($tz/3600)*100 + ($tz%3600)/60;
    
$result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz);

    return 
$result;
  }

 function 
ServerVar($varName) {
    global 
$HTTP_SERVER_VARS;
    global 
$HTTP_ENV_VARS;

    if(!isset(
$_SERVER)) {
      
$_SERVER = $HTTP_SERVER_VARS;
      if(!isset(
$_SERVER['REMOTE_ADDR'])) {
        
$_SERVER = $HTTP_ENV_VARS; // must be Apache
      
}
    }

    if(isset(
$_SERVER[$varName])) {
      return 
$_SERVER[$varName];
    } else {
      return 
'';
    }
  }

 function 
ServerHostname() {
    if (
$this->Hostname != '') {
      
$result = $this->Hostname;
    } elseif (
$this->ServerVar('SERVER_NAME') != '') {
      
$result = $this->ServerVar('SERVER_NAME');
    } else {
      
$result = 'localhost.localdomain';
    }

    return 
$result;
  }

 function 
Lang($key) {
    if(
count($this->language) < 1) {
      
$this->SetLanguage('en'); // set the default language
    
}

    if(isset(
$this->language[$key])) {
      return 
$this->language[$key];
    } else {
      return 
'Language string failed to load: ' . $key;
    }
  }

 function 
IsError() {
    return (
$this->error_count > 0);
  }

 function 
FixEOL($str) {
    
$str = str_replace("\r\n", "\n", $str);
    
$str = str_replace("\r", "\n", $str);
    
$str = str_replace("\n", $this->LE, $str);
    return 
$str;
  }

function 
AddCustomHeader($custom_header) {
    
$this->CustomHeader[] = explode(':', $custom_header, 2);
  } 
  #15 (permalink)  
Antiguo 24/06/2009, 03:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

Código PHP:
function MsgHTML($message,$basedir='') {
    
preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
    if(isset(
$images[2])) {
      foreach(
$images[2] as $i => $url) {
        
// do not change urls for absolute images (thanks to corvuscorax)
        
if (!preg_match('/^[A-z][A-z]*:\/\//',$url)) {
          
$filename = basename($url);
          
$directory = dirname($url);
          (
$directory == '.')?$directory='':'';
          
$cid = 'cid:' . md5($filename);
          
$fileParts = split("\.", $filename);
          
$ext = $fileParts[1];
          
$mimeType = $this->_mime_types($ext);
          if ( 
strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
          if ( 
strlen($directory) > 1 && substr($basedir,-1) != '/') { $directory .= '/'; }
          
$this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType);
          if ( 
$this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
            
$message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
          }
        }
      }
    }
    
$this->IsHTML(true);
    
$this->Body = $message;
    
$textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
    if ( !empty(
$textMsg) && empty($this->AltBody) ) {
      
$this->AltBody = $textMsg;
    }
    if ( empty(
$this->AltBody) ) {
      
$this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
    }
  }

 function 
_mime_types($ext = '') {
    
$mimes = array(
      
'hqx'  =>  'application/mac-binhex40',
      
'cpt'   =>  'application/mac-compactpro',
      
'doc'   =>  'application/msword',
      
'bin'   =>  'application/macbinary',
      
'dms'   =>  'application/octet-stream',
      
'lha'   =>  'application/octet-stream',
      
'lzh'   =>  'application/octet-stream',
      
'exe'   =>  'application/octet-stream',
      
'class' =>  'application/octet-stream',
      
'psd'   =>  'application/octet-stream',
      
'so'    =>  'application/octet-stream',
      
'sea'   =>  'application/octet-stream',
      
'dll'   =>  'application/octet-stream',
      
'oda'   =>  'application/oda',
      
'pdf'   =>  'application/pdf',
      
'ai'    =>  'application/postscript',
      
'eps'   =>  'application/postscript',
      
'ps'    =>  'application/postscript',
      
'smi'   =>  'application/smil',
      
'smil'  =>  'application/smil',
      
'mif'   =>  'application/vnd.mif',
      
'xls'   =>  'application/vnd.ms-excel',
      
'ppt'   =>  'application/vnd.ms-powerpoint',
      
'wbxml' =>  'application/vnd.wap.wbxml',
      
'wmlc'  =>  'application/vnd.wap.wmlc',
      
'dcr'   =>  'application/x-director',
      
'dir'   =>  'application/x-director',
      
'dxr'   =>  'application/x-director',
      
'dvi'   =>  'application/x-dvi',
      
'gtar'  =>  'application/x-gtar',
      
'php'   =>  'application/x-httpd-php',
      
'php4'  =>  'application/x-httpd-php',
      
'php3'  =>  'application/x-httpd-php',
      
'phtml' =>  'application/x-httpd-php',
      
'phps'  =>  'application/x-httpd-php-source',
      
'js'    =>  'application/x-javascript',
      
'swf'   =>  'application/x-shockwave-flash',
      
'sit'   =>  'application/x-stuffit',
      
'tar'   =>  'application/x-tar',
      
'tgz'   =>  'application/x-tar',
      
'xhtml' =>  'application/xhtml+xml',
      
'xht'   =>  'application/xhtml+xml',
      
'zip'   =>  'application/zip',
      
'mid'   =>  'audio/midi',
      
'midi'  =>  'audio/midi',
      
'mpga'  =>  'audio/mpeg',
      
'mp2'   =>  'audio/mpeg',
      
'mp3'   =>  'audio/mpeg',
      
'aif'   =>  'audio/x-aiff',
      
'aiff'  =>  'audio/x-aiff',
      
'aifc'  =>  'audio/x-aiff',
      
'ram'   =>  'audio/x-pn-realaudio',
      
'rm'    =>  'audio/x-pn-realaudio',
      
'rpm'   =>  'audio/x-pn-realaudio-plugin',
      
'ra'    =>  'audio/x-realaudio',
      
'rv'    =>  'video/vnd.rn-realvideo',
      
'wav'   =>  'audio/x-wav',
      
'bmp'   =>  'image/bmp',
      
'gif'   =>  'image/gif',
      
'jpeg'  =>  'image/jpeg',
      
'jpg'   =>  'image/jpeg',
      
'jpe'   =>  'image/jpeg',
      
'png'   =>  'image/png',
      
'tiff'  =>  'image/tiff',
      
'tif'   =>  'image/tiff',
      
'css'   =>  'text/css',
      
'html'  =>  'text/html',
      
'htm'   =>  'text/html',
      
'shtml' =>  'text/html',
      
'txt'   =>  'text/plain',
      
'text'  =>  'text/plain',
      
'log'   =>  'text/plain',
      
'rtx'   =>  'text/richtext',
      
'rtf'   =>  'text/rtf',
      
'xml'   =>  'text/xml',
      
'xsl'   =>  'text/xml',
      
'mpeg'  =>  'video/mpeg',
      
'mpg'   =>  'video/mpeg',
      
'mpe'   =>  'video/mpeg',
      
'qt'    =>  'video/quicktime',
      
'mov'   =>  'video/quicktime',
      
'avi'   =>  'video/x-msvideo',
      
'movie' =>  'video/x-sgi-movie',
      
'doc'   =>  'application/msword',
      
'word'  =>  'application/msword',
      
'xl'    =>  'application/excel',
      
'eml'   =>  'message/rfc822'
    
);
    return ( ! isset(
$mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
  }

  function 
set ( $name, $value = '' ) {
    if ( isset(
$this->$name) ) {
      
$this->$name = $value;
    } else {
      
$this->SetError('Cannot set or reset variable ' . $name);
      return 
false;
    }
  }

  function 
getFile($filename) {
    
$return = '';
    if (
$fp = fopen($filename, 'rb')) {
      while (!
feof($fp)) {
        
$return .= fread($fp, 1024);
      }
      
fclose($fp);
      return 
$return;
    } else {
      return 
false;
    }
  }

 function 
SecureHeader($str) {
    
$str = trim($str);
    
$str = str_replace("\r", "", $str);
    
$str = str_replace("\n", "", $str);
    return 
$str;
  }

 function 
Sign($key_filename, $key_pass) {
    
$this->sign_key_file = $key_filename;
    
$this->sign_key_pass = $key_pass;
  }

}

?> 
  #16 (permalink)  
Antiguo 24/06/2009, 20:59
Avatar de hanscruz  
Fecha de Ingreso: junio-2005
Mensajes: 278
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Error con phpmailer y gmail

En tu primer codigo busca la linea

var $SMTPSecure = "";

y cambiala por

var $SMTPSecure = "tls";

si no te funciona prueba con

var $SMTPSecure = "ssl";

Yo solo hice ese cambio y funciono perfecto.

Saludos.
__________________
:policia:
  #17 (permalink)  
Antiguo 25/06/2009, 03:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Error con phpmailer y gmail

No funciona, me sigue dando el mismo error... :(
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:30.