Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2011
verde_esmeralda verde_esmeralda is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 10
Poder: 0
verde_esmeralda Va por buen camino
Mandar emails con D4php!!

Hola un saludo,

El motivo por el cual doy esta molestia es pedir ayuda acerca de como poder enviar un email en D4php,por favor y muchas gracias.
Responder Con Cita
  #2  
Antiguo 14-03-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Supongo que tendrá componentes exprofeso (no uso Delphi4PHP), pero en una mala puedes hacerlo directamente, usando la función mail. Si no te funciona, comprueba los requisitos.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 14-03-2011
verde_esmeralda verde_esmeralda is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 10
Poder: 0
verde_esmeralda Va por buen camino
Muchas gracias por su atencion, he conseguido enviar email, ahora el siguiente paso es adjuntar archivos, disculpen la molestia, yo estoy investigando,pero necesito de su ayuda, muchas gracias.
Responder Con Cita
  #4  
Antiguo 15-03-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El tema de los adjuntos es algo más complicado. Existen varias bibliotecas que lo facilitan, pero supongo que Delphi4PHP las incluirá. ¿No dice nada la ayuda de Delphi4PHP?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 25-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Hola yo tengo el mismo problema quisiera ver si podrias decir como lo solucionaste
Responder Con Cita
  #6  
Antiguo 25-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Para enviar correo con PHP definitivamente recomiendo PHPMailer. Te facilita todo incluyendo adjuntos, correo en formato de texto, html y dual.

Lo que sí no tengo ni idea es de cómo usarlo con Delphi4PHP, pero supongo que tiene la capacidad de incluir bibliotecas externas.

// Saludos
Responder Con Cita
  #7  
Antiguo 25-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Hola si uso phpmailer lo tengo configurado de la sig manera.

Código PHP:
<?
  
require "class.phpmailer.php";
  
$mail = new phpmailer();
  
$mail->SetLanguage("es""language/"); 

  
//  $mail->mailer = "smtp";
  
$mail->IsSMTP();
  
$mail->SMTPDebug  2// para q muestre errorers de SMTP

  //Asignamos a Host el nombre de nuestro servidor smtp
  
$mail->SMTPAuth true
  
$mail->SMTPSecure "tls";
  
$mail->Host "smtp.gmail.com";//ssl://smtp.gmail.com";
  
$mail->Port 587;
  
  
//Le indicamos que el servidor smtp requiere autenticación
  //$mail->SMTPAuth = true;  
  //Le decimos cual es nuestro nombre de usuario y password
  
$mail->Username "angel.mendez.saucedo@gmail.com"
  
$mail->Password "angelmendezsaucedo01";

  
//Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  
$mail->From "angel.mendez.saucedo@gmail.com";
  
$mail->FromName "angel.mendez.saucedo";

  
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  
$mail->Timeout=30;

  
//Indicamos cual es la dirección de destino del correo
$direccion=  "dragondeagua01@gmail.com";
$mail->AddAddress($direccion);

  
//Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  
$mail->Subject "Prueba de phpmailer";
  
$mail->Body "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";

  
//Definimos AltBody por si el destinatario del correo no admite email con formato html 
  
$mail->AltBody "Mensaje de prueba mandado con phpmailer en formato solo texto";


  
//se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true
  
$exito $mail->Send();



  
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho 
  //para intentar enviar el mensaje, cada intento se hara 5 segundos despues 
  //del anterior, para ello se usa la funcion sleep    
  
$intentos=1

  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
//echo $mail->ErrorInfo;
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }

   if(!
$exito)
   {
    echo 
"Problemas enviando correo electrónico a ".  $direccion;
    echo 
"<br/>".$mail->ErrorInfo;    
   }
   else
   {
    echo 
"Mensaje enviado correctamente";
   } 
echo 
"<br> q paso";
?>

Última edición por roman fecha: 25-03-2011 a las 19:42:29.
Responder Con Cita
  #8  
Antiguo 25-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por aams01 Ver Mensaje
Hola si uso phpmailer lo tengo configurado de la sig manera.
Y, ¿cuál es la duda? ¿Cómo mandar un attachment?

La clase PHPMailer tiene métodos para ello, por ejemplo, AddAttachment, al que especificas la ruta donde está el archivo que queres adjuntar.

También puedes mandar un adjunto a partir de un string. Por ejemplo, yo uso FPDF para crear un documento pdf:

Código PHP:
$pdf = new FPDF('P''in''Letter');

/*
  ...

  Líneas para crear el contenido

  ...
*/

$documento $pdf->Output('''S'); 
Entonces, utilizo AddStringAttachment:

Código PHP:
$mail->AddStringAttachment($documento'carta-registro.pdf''base64''application/octet-stream'); 
El nombre que pones ahí (carta-registro.pdf en el ejemplo) es el nombre con el que va el archivo adjunto.

// Saludos
Responder Con Cita
  #9  
Antiguo 25-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
el problema en si esque no funciona manda errores de envio, ya e releido por todos lados y nomas no encuentro lo que este mal, ya configure el Gmail permitiendo el envio de IMAP SMTP y pop3, alguna sugerencia
Responder Con Cita
  #10  
Antiguo 25-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues, si no dices cuáles son los errores que marca, poco se puede hacer.

// Saludos
Responder Con Cita
  #11  
Antiguo 27-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Unhappy

Hola el error es el siguienete.
No se puede enviar el correo a los siguientes destinatarios: CORREO
el error es provocado por SMTP su conexion siempre marca error, si lo pudieras correr seria de mucha ayuda los datos puestos son los de verdad ya que este archivo fue echo pára prueba de eso q son datos correctos.
Responder Con Cita
  #12  
Antiguo 28-03-2011
verde_esmeralda verde_esmeralda is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 10
Poder: 0
verde_esmeralda Va por buen camino
HOLA aams01

Mira yo solucione lo del e-mail de la siguiente manera:

Código:
 
<?php
require_once("vcl/vcl.inc.php");
//Inclusiones
use_unit("comctrls.inc.php");
use_unit("Zend/zmail.inc.php");
use_unit("forms.inc.php");
use_unit("extctrls.inc.php");
use_unit("stdctrls.inc.php");
//Definición de clase
class Unidad4 extends Page
{
       public $Edit1 = null;
       public $ZMailTransportSendmail1 = null;
       public $zmCustom = null;
       public $zmtSMTP = null;
       public $reBody = null;
       public $edSubject = null;
       public $Label5 = null;
       public $cbIncludeAttachments = null;
       public $cbPlainTextOnly = null;
       public $meBcc = null;
       public $Label4 = null;
       public $meCC = null;
       public $Label3 = null;
       public $Label2 = null;
       public $meTo = null;
       public $edFrom = null;
       public $Label1 = null;
       public $Button1 = null;
       function zmCustomCustomizeAttachment($sender, $params)
       {
       $result=array();
        list($key, $attachment)=each($params);
        if ($attachment=='mail.php')
        {
            $result['mimetype']=Zend_Mime::TYPE_TEXT;
            $result['disposition']=Zend_Mime::DISPOSITION_INLINE;
        }
        return($result);
 
       }
       function Button1Click($sender, $params)
       {
            $this->zmtSMTP->Host=$this->Edit1->Text;
            $this->zmCustom->FromEmail=$this->edFrom->Text;
            $this->zmCustom->Subject=$this->edSubject->Text;
            $this->zmCustom->BodyText=strip_tags($this->reBody->Text);
            if (!$this->cbPlainTextOnly->Checked) $this->zmCustom->BodyHTML=$this->reBody->Text;
            else $this->zmCustom->BodyHTML='';
            if (count($this->meTo->Lines)>=1) $this->zmCustom->To=array_combine($this->meTo->Lines, array_fill(0,count($this->meTo->Lines),""));
            if (count($this->meCC->Lines)>=1) $this->zmCustom->Cc=array_combine($this->meCC->Lines, array_fill(0,count($this->meCC->Lines),""));
            if (count($this->meBcc->Lines)>=1) $this->zmCustom->Bcc=array_combine($this->meBcc->Lines, array_fill(0,count($this->meBcc->Lines),""));
            if ($this->cbIncludeAttachments->Checked)
            {
                $this->zmCustom->Attachments=array(0=>'mail.php',1=>'mail.xml.php');
            }
            else
            {
                $this->zmCustom->Attachments=array();
            }
            $this->zmCustom->send();
 
       }
}
En el formulario tengo los siguientes componentes:

ZMailTransportSendmail1

ZMailTransportSMTP: en sus propiedades tengo->Authentication:saLogin,host(lo que tienes en host),Username(nombre de tu usuario),UserPassword(Tu password).

ZMail: en la propiedad Transport:va ligado con ZMailTransportSMTP.

Espero te sea de ayuda.
Responder Con Cita
  #13  
Antiguo 28-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Cita:
Empezado por aams01 Ver Mensaje
Hola el error es el siguienete.
No se puede enviar el correo a los siguientes destinatarios: CORREO
el error es provocado por SMTP su conexion siempre marca error, si lo pudieras correr seria de mucha ayuda los datos puestos son los de verdad ya que este archivo fue echo pára prueba de eso q son datos correctos.
Lo que muestra es lo siguiente
SMTP -> FROM SERVER:220 mx.google.com ESMTP wo11sm2454916icb.20
SMTP -> FROM SERVER: 250-mx.google.com at your service, [189.231.222.45] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250 ENHANCEDSTATUSCODES
SMTP -> ERROR: AUTH not accepted from server: 530 5.7.0 Must issue a STARTTLS command first. wo11sm2454916icb.20
SMTP -> FROM SERVER:250 2.1.5 Flushed wo11sm2454916icb.20
SMTP -> FROM SERVER:530 5.7.0 Must issue a STARTTLS command first. wo11sm2454916icb.20
SMTP -> ERROR: MAIL not accepted from server: 530 5.7.0 Must issue a STARTTLS command first. wo11sm2454916icb.20
SMTP -> FROM SERVER:250 2.1.5 Flushed wo11sm2454916icb.20
Problemas enviando correo electrónico a dragondeagua01@gmail.com
La(s) siguiente(s) direcciones de remitente fallaron: angel.mendez.saucedo@gmail.com
Responder Con Cita
  #14  
Antiguo 28-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
aams01,

Te pongo un ejemplo que uso:

Código PHP:
<?php
/*
 * Para ejecutar este ejemplo, hay que colocar la carpeta del phpmailer v5.1
 * en el mismo directorio que este script.
 *
 * Asignar a SMTP_USERNAME y SMTP_PASSWORD los valores de la cuenta
 * de gmail desde la que envian el correo.
 */

define('DIR_BASE'dirname(__FILE__) . DIRECTORY_SEPARATOR);
define('DIR_PHPMAILER'DIR_BASE 'phpmailer_v5.1' DIRECTORY_SEPARATOR);

define('SMTP_USERNAME''usuario');
define('SMTP_PASSWORD''password');

require_once(
DIR_PHPMAILER 'class.phpmailer.php');

$mail = new PHPMailer();

$mail->isSMTP(true);

$mail->SMTPAuth   true;
$mail->SMTPSecure "ssl";
$mail->Host       "smtp.gmail.com";
$mail->Port       465;
$mail->Username   SMTP_USERNAME;
$mail->Password   SMTP_PASSWORD;

$mail->Subject 'Prueba de correo';
$mail->Body 'Hola mundo';

// Agregar destinatario(s)
$mail->AddAddress('usuario@servidor');

return 
$mail->Send();
Nota que en SMTPSecure yo uso ssl en lugar de tls y que el puerto es 465 y no 587.

También debes asegurarte que tu servidor tiene instalada la extensión openssl de php.

// Saludos
Responder Con Cita
  #15  
Antiguo 29-03-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Cool

Hola ya logre solucionar el problema era como tu decias Roman era cuestion de configurar el php.ini faltaba retirar ";" extension=php_openssl.dll
Dejo el archivo y su configuracion por si a alguien le ayuda, tomando encuenta que se utilizo la clase de phpmailer tal cual se descargo sin modificar, la cuenta gmail fue configurada en su seccion configuracion (Reenvío y correo POP/IMAP) Solamente Habilitar IMAP:

Código PHP:
<?
  
include("include/class.phpmailer.php");
  include(
"include/class.smtp.php");
  
  
$mail = new phpmailer();
  
$mail->SetLanguage("es""include/language/"); 

  
$mail->mailer "smtp";
  
$mail->IsSMTP();
  
$mail->SMTPDebug  1// para q muestre errorers de SMTP

  //Asignamos a Host el nombre de nuestro servidor smtp
  
$mail->SMTPAuth true
 
// Lo siguiente es conforme a la configuracion dada por gmail 
  
$mail->SMTPSecure 'tls';
  
$mail->Host 'smtp.gmail.com';
  
$mail->Port 587;
  
  
//Le indicamos que el servidor smtp requiere autenticación
  //Le decimos cual es nuestro nombre de usuario y password
  
$mail->Username 'angel.mendez.saucedo@gmail.com'// Correo Gmail
  
$mail->Password 'angelmendezsaucedo01';       // Contraseña del correo

  //Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  
$mail->From 'angel.mendez.saucedo@gmail.com';      
  
$mail->FromName 'Angel Mendez';

  
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  
$mail->Timeout=30;

  
//Indicamos cual es la dirección de destino del correo
  
$direccion=  'dragondeagua01@gmail.com';
  
$mail->AddAddress($direccion);

  
//Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  
$mail->Subject "Modificacion 27 Correo 4";
  
$mail->IsHTML(true);
  
$mail->Body "<b>Correo mandado mODIFICACION 27 Correo4 windraaaa</b>";

  
//Definimos AltBody por si el destinatario del correo no admite email con formato html 
  
$mail->AltBody "Correo mandado mODIFICACION 27 Correo4";

  
//se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true
  
$exito $mail->Send();

  
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho 
  //para intentar enviar el mensaje, cada intento se hara 5 segundos despues 
  //del anterior, para ello se usa la funcion sleep    
  
$intentos=1

  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);   
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
   }

   if(!
$exito)
   {
        echo 
"Problemas enviando correo electrónico a ".  $direccion;
        echo 
"<br/>".$mail->ErrorInfo;    
   }
   else
   {
        echo 
"Mensaje enviado correctamente";
   } 
?>
Gracias a todos por su participacion y su apoyo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Configuracion D4php llonigualker Internet 0 03-03-2009 17:58:14
Emails, error de conexion en algunas PC nfrfabian Internet 1 19-09-2007 17:03:29
d4php No funciona en la web brandolin PHP 2 06-07-2007 18:57:20
enviar emails jmlifi Varios 9 25-11-2005 21:16:37
Cadenas de emails santana Humor 1 06-09-2004 16:38:00


La franja horaria es GMT +2. Ahora son las 22:54:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi