Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Cómo puedo enviar a múltiples destinatarios un email conteniendo HTML (https://www.clubdelphi.com/foros/showthread.php?t=49042)

Cecilio 11-10-2007 11:47:25

Cómo puedo enviar a múltiples destinatarios un email conteniendo HTML
 
Hola a todos.

Necesito crear un programa que envie un página html guardada en disco a una lista determinada de destinatarios.

el problema es que no se bien ni como empezar.

¿ alguna ayuda de componentes ? o bien un ejemplo simple.

Gracias.

dec 11-10-2007 11:55:45

Hola,

Empieza por buscar en estos foros. Encontrarás información seguro, porque es un tema que se ha tratado en más de una ocasión.

PD. Un poco de paciencia al escribir el título de los hilos, por favor.

Cecilio 11-10-2007 11:59:31

Gracias Dec

He buscado en el foro antes de escribir, y tras ver varias páginas no encontré nada que me ayudara.

Gracias tambien por modificarme el título, y disculpas.

dec 11-10-2007 12:05:20

Hola,

Pues es raro. Yo acabo de buscar "enviar email html" y me aparecen varios resultados. Y todavía podría afinarse un poco más buscando "email indy", sólo "enviar email", "enviar correo", etc., etc.

Cecilio 13-10-2007 11:51:29

Hola Dec.

Si, finalmente lo encontré. Lo estaba buscando mal.

Ya tengo una pequeña aplicación que me envía los e-mail a la lista dir. que exporto desde Thuderbird.

Mi problema actual es el siguiente. Quiero enviar un email con un contenido html que tambien he exportado desde Thunderbir, usando una plantilla.

Pero al recibir el emal (enviado con mi aplicación y componentes Indy) ve el código html en vez el email normal.

Estoy buscando en el componente TIdMessage y no veo como modificarlo para que no se vea el código html.

¿ alguna idea ?

dec 13-10-2007 13:08:29

Hola,

El siguiente código lo extraigo de un ejemplo que guardo por aquí con el nombre "Enviar correos HTML con imágenes", más o menos. A ver si te sirve para hacerte una idea. El asunto principal es el "ContentType" del mensaje de correo. Pero, piensa que el cliente de correo que lo reciba ha de admitir el HTML. Por ejemplo, el que yo uso no lo admite, sólo ve texto plano (afortunadamente) y así hay mensajes que ni veo...

Pero fíjate que el código siguiente muestra la que quizá sea la forma adecuada de hacerlo: enviar el correo en texto plano y en HTML, de modo que el cliente pueda elegir, o, por lo menos, no quedarse sin mensaje si no puede leer HTML.

Código Delphi [-]
uses
  idMessage;

procedure TForm1.Button1Click(Sender: TObject);
var
  html: TStrings;
  htmpart, txtpart: TIdText;
  bmppart: TIdAttachment;
  email: TIdMessage;
  filename: string;
begin
  filename := ExtractFilePath(Application.ExeName) + 'us.jpg';

  html := TStringList.Create();
  html.Add('< html >');
  html.Add('< head >');
  html.Add('< /head >');
  html.Add('< body >< h1 >Hello< /h1 >');
  html.Add('< img src="cid:us.jpg" / >');
  html.Add('This is a picture of us!');
  html.Add('< /html >');

  email := TIdMessage.Create(nil);
  email.From.Text := 'jhondoe@jhondoe.com';
  email.Recipients.EMailAddresses := 'jhondoeson@jhondoeson.com';
  email.Subject := 'Hello';
  email.ContentType := 'multipart/mixed';
  email.Body.Assign(html);

  txtpart := TIdText.Create(email.MessageParts);
  txtpart.ContentType := 'text/plain';
  txtpart.Body.Text := '';

  htmpart := TIdText.Create(email.MessageParts, html);
  htmpart.ContentType := 'text/html';

  bmppart := TIdAttachment.Create(email.MessageParts, filename);
  bmppart.ContentType := 'image/jpeg';
  bmppart.FileIsTempFile := true;
  bmppart.ContentDisposition := 'inline';
  bmppart.ExtraHeaders.Values['content-id'] := 'us.jpg';
  bmppart.DisplayName := 'us.jpg';

  try
    idSMTP.Connect();
    try
      idSMTP.Send(email);
      ShowMessage('Sent');
    except
      on E: Exception do
        ShowMessage('Failed: ' + E.Message);
    end;
  finally
    idSMTP.Disconnect();
    email.Free();
    html.Free();
  end;
end;

Nota: Fíjate que el HTML que aparece en el código tiene etiquetas "con espacios". Esto es sólo para que se vea bien el código en los foros, en realidad las etiquetas no llevan espacios.

smessina 29-09-2008 22:55:09

mail en formato hmtl con imagen en outlook
 
Hola perdon por retrotraerlos a este post, pero necesito mandar un mail con imagenes, para lo que entiendo que debo mandarlo en formato html, lo que dice este post me sirvio en su momento para mandarlo con las indy pero yo necesito mandarlo por outlook 2003, y no me queda claro como se haria, le pongo el codigo que yo uso
Código Delphi [-]
        html := TStringList.Create();
        html.Add('');
        html.Add('');
        html.Add('');
        html.Add('

Lo que sea

'
); html.Add(''); html.Add(''); Outlook := CreateOleObject('Outlook.Application'); miMail := Outlook.CreateItem(olMailItem); miMail.Recipients.Add('smessina@dcom.com.ar'); miMail.Subject := 'Mensaje de Prueba'; // alternatively send an HTML email (not in Outlook 97) miMail.HTMLBody := html.Text; miMail.Attachments.Add(camino+'imagen.jpg'); miMail.Send;

pero me llega el mail sin la imagen por lo que creo que me faltaria definir esta parte :
Código Delphi [-]
  htmpart := TIdText.Create(email.MessageParts, html);
  htmpart.ContentType := 'text/html';

  bmppart := TIdAttachment.Create(email.MessageParts, filename);
  bmppart.ContentType := 'image/jpeg';
  bmppart.FileIsTempFile := true;
  bmppart.ContentDisposition := 'inline';
  bmppart.ExtraHeaders.Values['content-id'] := 'us.jpg';

  bmppart.DisplayName := 'us.jpg';

pero no se como aplicarlo a mi codigo para poder mandarlo por outlook.


Gracias por su tiempo.

Santiago.


La franja horaria es GMT +2. Ahora son las 11:50:46.

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