Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Enviar un mail - metodo eficaz (https://www.clubdelphi.com/foros/showthread.php?t=80790)

Khronos 07-04-2007 18:21:30

Enviar un mail - metodo eficaz
 
Con este truco puedes enviar mails de manera facil y sin problemas. Añadir ComObj a los uses.

Código:

procedure TMailer.Button5Click(Sender: TObject);
var
Mail: Variant;
ArchivoAdjunto: boolean;
begin
 Mail:= CreateOleObject('CDO.Message');// no esta en W xp
 Mail.From:= edit1.text; //mail remitente
 Mail.Subject:= edit3.text;  //asunto
 Mail.TextBody:= memo1.Text;  //contenido del mail
 Mail.To:= edit2.text;  //mail receptor
 If ArchivoAdjunto=true then begin
 Mail.AddAttachment(edit4.text);  //añadir un archivoadjunto
 end;
 Mail.Send;  //enviar
 Mail:= Unassigned;
end;

Espero que se entienda.

Salu2

mastergav 07-04-2007 18:21:31

el codigo del mail lo entiendo
pero ¿que es comobj?
¿y como es el codigo de comobj?

Khronos 07-04-2007 23:17:29

ComObj lo tienes ke añadir a las librerias ke va a utilizar tu proyecto.

Código:

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj;


nikita 08-04-2007 13:05:18

Buenas Khronos, mira yo pongo el codigo y lo hago como tu dices, pero me da 1error del tipo: EOleException with message 'No es valido el valor de configuracion "SendUsing"'.
No soy muy experta,que tengo que hacer?? En el momento que lo ejecuto tengo internet funcionando correctamente, pero yo en mi proyecto no tengo nada configurado para internet.
Gracias

Khronos 08-04-2007 16:13:48

Haber, os voy a poner el codigo entero porque a mi me funciona perfectamente.

Código:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    RichEdit1: TRichEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Mail: Variant;
begin
 Mail:= CreateOleObject('CDO.Message');
 Mail.From:= edit1.text;
 Mail.Subject:= edit2.text;
 Mail.TextBody:= richedit1.lines.text;
 Mail.To:= edit3.text;
 Mail.Send;
 Mail:= Unassigned;

end;

end.

Este es el codigo basico, para enviar un mail sin archivo adjunto.
Si quereis enviar un archivo adjunto, tendreis ke añadir el metodo

Código:

Mail.AddAttachment('Direccion del archivo');
Funciona perfectamente, no hay ningun motivo para que no funcione y no uso ningun tipo de componentes especial.

Salu2

Khronos 08-04-2007 19:56:18

Ya probe lo ke deciais fui a un ciber y lo probe y me dio ese error. Pero quitais

Código:

Mail:= Unassigned;
y se soluciona.

Salu2

JF Sebastian 11-04-2007 13:14:36

A mi me dice que se requiere autentificacion al enviar el mensaje

RicardoNavarro 13-04-2007 00:29:02

Lo Escribi como aparece en el ejemplo e igual aparece el error:

'No es valido el valor de configuracion "SendUsing"'.



nikita 13-04-2007 11:33:38

Me sigue dando el error de SendUsing quitando la linea
Mail:= Unassigned;

Khronos 13-04-2007 17:34:02

Joder, pues no se ke puede ser. A lo mejor es por la configuracion de internet. Lo investigo y os respondo.
Salu2

Khronos 13-04-2007 18:30:11

Ya esta, ahora si ke funciona. Habia ke configurar el puerto.
Añadir este code antes de la funcion Mail.send

Código:

Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') := 2;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') := 'smtp.servidor.com';
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport') := 25;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout') := 60;

Salu2

Khronos 13-04-2007 18:30:46

Ya esta, ahora si ke funciona. Habia ke configurar el puerto.
Añadir este code antes de la funcion Mail.send

Código:

Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') := 2;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') := 'smtp.servidor.com';
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport') := 25;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout') := 60;

Salu2

JF Sebastian 13-04-2007 19:20:46

Como seria el codigo para una direccion de hotmail,
me da error 530 requerida autenticacion

nikita 14-04-2007 11:42:09

Aunque no os lo creais me sigue dando el mismo error. No es valido el valor d configuracion del SendUsing.

Chris 16-04-2007 17:19:52

Me pregunto si alguno de estos código sirve para colocar el mensaje en la bandeja de salida de la aplicación de correo predeterminada. En estos días he andado buscando un método para escribir un correo en HTML y luego con la api colocarlo en la bandeja de salida, hasta ahora solo he visto como hacerlo simples mensajes que contenga solamente texto. En una página encontré un ejemplo realizar la tarea que necesito, el problema era que solo funcionaba con Outlook y no es precisamente lo que ando buscando. ¿Alguno de ustedes me podría aydar?

juliobuitrago 20-05-2007 02:32:07

Muchas veces lo simple es complejo.......que enredo.
Hay componentes especializados, aunque el SMTP es casi una "chica divertida", es mejor componentes donde configuremos todo, recueden que ahora los servers bloquean todo lo que no tenga una autenticación "casi perfecta".
Agradecemos el truco...pero parece que hay problemas....
Que hay de las Indy y otras?, Todas piden que se confure el puerto, y cuidado, depende siempre del server desde donde lo enviarás, puede que el correo "sender" necesite autenticación...y ahi se complica el truco.
Saludos

MaMu 03-06-2007 04:02:32

Lo probe, andar anda, pero no adjunta ninguno de los tipos de archivo que probe, ni txt ni jpg.

Saludos

jcarlos.matrix 13-06-2007 03:54:52

Efectimente he probado varios tipos de como enviar mensajes, desde outlook , comobj, indys, y efectivamente ahora todo se tiene que autentificar yo lo que uso son los indys y tengo que usar cuentas autentificadas.

estoy deacuedo con juliobuitrago

Helloween 13-06-2007 22:00:16

Mail.Configuration.Fields.Add('http://schemas.microsoft.com/cdo/configuration/sendusername', '<nombre_de_usuario>');
Mail.Configuration.Fields.Add('http://schemas.microsoft.com/cdo/configuration/sendpassword', '<clave_de_usuario>');


Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') := 2;
Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') := 'smtp.servidor.com';


Además del código que apunta Khronos:
Código:

Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/sendusing') := 2;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver') := 'smtp.servidor.com';
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport') := 25;
 Mail.Configuration.Fields.Item('http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout') := 60;

(donde 'smtp.servidor.com' es nuestro servidor smtp, donde tenemos una cuenta de correo activa, con usuario y contraseña)

necesitamos introducir los campos con el nombre de usuario y la contraseña de la cuenta de correo de la misma, con estas líneas:

Código:

Mail.Configuration.Fields.Add('http://schemas.microsoft.com/cdo/configuration/sendusername', '<nombre_de_usuario>');
Mail.Configuration.Fields.Add('http://schemas.microsoft.com/cdo/configuration/sendpassword', '<clave_de_usuario>');

Espero que sea de ayuda. Un saludo

AntonioMM 29-05-2008 09:11:06

Tengo la respuesta a los problemas de "SENDUSING".

Dicho parámetro solo sirve para Win 2000, ya que en
Win XP el objeto CDO, con el que se empieza el código
'no existe'.

Forma de arreglarlo, yo me he cambiado a las INDI.

Salu2.


La franja horaria es GMT +2. Ahora son las 22:00:27.

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