Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2009
lduron lduron is offline
Miembro
 
Registrado: jun 2006
Posts: 30
Poder: 0
lduron Va por buen camino
Sobre envío de correo en Delphi 7

Hola amigos de Club Delphi!

Alguien puede ayudarme con este código:

Código Delphi [-]
 
unit EnviarCorreo;
interface
uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
  IdSMTP, ComCtrls, StdCtrls, Buttons, ExtCtrls, IdBaseComponent, IdMessage;
type
  TForm1 = class(TForm)
    pnlBottom: TPanel;
    Body: TMemo;
    ledAttachment: TLabeledEdit;
    btnAttachment: TBitBtn;
    ledSubject: TLabeledEdit;
    pnlTop: TPanel;
    ledHost: TLabeledEdit;
    ledFrom: TLabeledEdit;
    ledTo: TLabeledEdit;
    ledCC: TLabeledEdit;
    btnSendMail: TBitBtn;
    StatusMemo: TMemo;
    MailMessage: TIdMessage;
    SMTP: TIdSMTP;
    AttachmentDialog: TOpenDialog;
    procedure btnSendMailClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnAttachmentClick(Sender: TObject);
    procedure SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
  private
    { Private declarations }
    procedure GetSettings;
    procedure SaveSettings;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.GetSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ledHost.Text := ini.ReadString('SMTP','Host','');
    ledFrom.Text := ini.ReadString('MAIL','From','');
    ledTo.Text   := ini.ReadString('MAIL','To','');
    ledCC.Text   := ini.ReadString('MAIL','CC','');
  finally
    ini.Free;
  end;
end;
procedure TForm1.SaveSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ini.WriteString('SMTP','Host',ledHost.Text);
    ini.WriteString('MAIL','From',ledFrom.Text);
    ini.WriteString('MAIL','To'  ,ledTo.Text);
    ini.WriteString('MAIL','CC'  ,ledCC.Text);
  finally
    ini.Free;
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  GetSettings;
end;
procedure TForm1.btnSendMailClick(Sender: TObject);
begin
  StatusMemo.Clear;
  //setup SMTP
  SMTP.Host := ledHost.Text;
  SMTP.Port := 25;
  //setup mail message
  MailMessage.From.Address := ledFrom.Text;
  MailMessage.Recipients.EMailAddresses := ledTo.Text + ',' + ledCC.Text;
  MailMessage.Subject := ledSubject.Text;
  MailMessage.Body.Text := Body.Text;
  if FileExists(ledAttachment.Text) then
    TIdAttachment.Create(MailMessage.MessageParts, ledAttachment.Text);
  //send mail
  try
    try
      SMTP.Connect(1000);
      SMTP.Send(MailMessage);
    except on E:Exception do
      StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
    end;
  finally
    if SMTP.Connected then SMTP.Disconnect;
  end;
end;
procedure TForm1.btnAttachmentClick(Sender: TObject);
begin
  if AttachmentDialog.Execute then
    ledAttachment.Text := AttachmentDialog.FileName;
end;
procedure TForm1.SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  StatusMemo.Lines.Insert(0,'Status: ' + AStatusText);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveSettings;
end;
end.

Al momento de ejecutarlo me manda el siguiente error:

Código:
 
Status: Disconnected.
Status: Disconnecting.
ERROR: 5.7.0 Must issue a STARTTLS command first. 5sm528965qwg.34
Status: Connected.
Status: Connecting to 74.125.93.111.
Status: Resolving hostname smtp.gmail.com.
Muchas gracias de antemano por su ayuda.

Última edición por dec fecha: 05-03-2009 a las 20:37:56. Razón: Poner las correspondientes etiquetas
Responder Con Cita
  #2  
Antiguo 05-03-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Veo que estás utilizando el puerto 25 como correo saliente, no es correcto para Gmail.
Cita:
  • Marca la casilla que aparece junto a El servidor requiere una conexión segura (SSL) en Servidor de correo saliente (SMTP).
  • Escribe 465 en el campo Correo saliente(SMTP):
  • Marca la casilla que aparece junto a El servidor requiere una conexión segura (SSL) en Servidor de correo saliente (SMTP).
  • Marca la casilla que aparece junto a El servidor requiere una conexión segura (SSL) en Servidor de correo entrante (POP3). El número de puerto cambia a 995.
Un Saludo
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 05-03-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
marcos eso no le sirve porque es para configurar un cliente de correo, nuestro amigo lo esta haciendo directamente por código. De hecho, a mi me paso igual y para no liarme mucho mejor utilice una cuenta propia del servidor de mi cliente.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 06-03-2009
lduron lduron is offline
Miembro
 
Registrado: jun 2006
Posts: 30
Poder: 0
lduron Va por buen camino
Entonces chavos que es lo que me sugieren?

Por ejemplo: tengo una cuenta en gmail y quiero mandar el correo desde esta cuenta a otra de yahoo, hotmail, etc.

Muchas gracias.

P.D. Les pido de favor...si me pueden explicar más a detalle ya que soy usuario básico y el código lo obtuve de internet.
Responder Con Cita
  #5  
Antiguo 06-03-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por marcoszorrilla Ver Mensaje
Veo que estás utilizando el puerto 25 como correo saliente, no es correcto para Gmail.

Un Saludo
Hola Marcos, yo también pense que no era correcto, funciona con el puerto 25 pero en el IdSMTP propiedad UseTLS debes escoger utUseExplicitTLS , pero si es con el puerto 465 o 586 se debe poner utUseImplicitTLS.

Cita:
Empezado por lduron Ver Mensaje
Entonces chavos que es lo que me sugieren?
Por ejemplo: tengo una cuenta en gmail y quiero mandar el correo desde esta cuenta a otra de yahoo, hotmail, etc.
Hola, yo te aconsejo que primero hagas funcionar el programa que te indico Roman en el otro hilo, tal cual esta, porque el problema es mas de configuración que del programa, empieza por ahí, dinos los errores que te da y te ayudamos. pregunta ¿tienes habilitado POP en tu cuenta de Gmail? ¿has instalado la biblioteca SSL?

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 06-03-2009 a las 16:36:57.
Responder Con Cita
  #6  
Antiguo 06-03-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Queda aclarado, gracias AzidRain y Caro.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
Respuesta



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
Sobre Enviar Correo desde Delphi 7 lduron Varios 4 25-02-2009 21:41:00
Error en el envío de correo. Cecilio Internet 0 02-07-2008 17:28:20
Duda Envio de Correo jlalvarez OOP 6 19-12-2007 21:28:32
envío de correo con JEdi felixgo Internet 5 20-12-2005 11:29:36
envio de correo srangel Linux 0 22-04-2005 17:44:56


La franja horaria es GMT +2. Ahora son las 10:52:52.


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