Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2018
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 7
nincillo Va por buen camino
INDY: ¿Cómo generar un correo y luego enviarlo con cliente email por defecto?

Hola. Estaba intentando generar un fichero .eml con el msg.savetofile de Indy y luego con el shellexecute abrirlo con el programa de correo por defecto que esté instalado en el sistema (dando así la oportunidad al usuario de ver el correo resultante antes de enviarlo).

Hasta ahí, todo bien. Me genera el fichero con los adjuntos y me lo abre correctamente con MS Outlook, MS Mail, etc.

El problema lo tengo con que me abre el correo de tal forma que no tengo opción de enviar. Solo tengo opción de responder, reenviar, etc.

¿Alguien podría decirme alguna manera de solucionarlo o cómo hacerlo de otra forma?.

Mi idea es poder generar un correo electrónico y que lo abra con el cliente de correo que tenga instalado en el sistema por defecto para luego poder darle a enviar.

Gracias y un saludo.
Responder Con Cita
  #2  
Antiguo 15-03-2018
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,
no pones como estás intentando enviar ese archivo. Yo te pongo esta instrucción que lo que hace es abrir la aplicación que windows tenga marcada como predeterminada para abrir el tipo de extensión que tenga el fichero que le pases.

Código Delphi [-]
ShellExecute(0,PWidechar('Open'),PWideChar(rutadelarchivo),nil,nil,0);

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 15-03-2018
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 7
nincillo Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
Hola,
no pones como estás intentando enviar ese archivo. Yo te pongo esta instrucción que lo que hace es abrir la aplicación que windows tenga marcada como predeterminada para abrir el tipo de extensión que tenga el fichero que le pases.

Código Delphi [-]
ShellExecute(0,PWidechar('Open'),PWideChar(rutadelarchivo),nil,nil,0);

Saludos.
Hola @ElDioni.

Exactamente así es como lo hago, y el correo lo abre perfectamente construido. Con imágenes, adjuntos y demás. El "problema" es que lo abre como si fuera un correo recibido y no uno nuevo. Con lo cual, en lugar de darme la opción de Enviar, me da las opciones de Responder, Reenviar, etc.

Un saludo.

Última edición por nincillo fecha: 15-03-2018 a las 19:00:23.
Responder Con Cita
  #4  
Antiguo 15-03-2018
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Hola.

Los archivos con formato .eml son mensajes "recibidos" y almacenados para consulta posterior.

Si quiere enviar correos electrónicos utilizando otro software, tendría que explorar opciones de automatización específicas para cada uno de esos programas. Por ejemplo, así.

Aunque, también podría intentar trucos como Sending mail from Delphi using Thunderbird - Stack Overflow, donde usan drag and drop para llevar archivos adjuntos a un mensaje en un cliente de correo electrónico.

Si fuera Ud., como ya estoy usando Indy, pues envío el correo desde la aplicación y ya.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 16-03-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Puedes utilizar esto también:
http://www.delphifaq.com/faq/delphi/network/f236.shtml

Envía correos utilizando el cliente de correo por defecto del ordenador.

Si tienes mas de un adjunto puedes modificar esa parte con esto:
Código Delphi [-]
  ArchivosAdjuntos := TStringList.Create;
  try
     ArchivosAdjuntos.Add('C:\Fotos\Foto1.jpg');
     ArchivosAdjuntos.Add('C:\Fotos\Foto2.jpg');
     ArchivosAdjuntos.Add('C:\Fotos\Foto3.jpg');
     SendMailMAPI('Prueba', 'Esto es una prueba', ArchivosAdjuntos, 'Pepito Perez', 'pepito.perez@gmail.com', 'Fulanito Ggarcia', 'fulanito.garcia@hotmail.com')
  finally
     ArchivosAdjuntos.Free;
  end;

function TDMListados.SendMailMAPI(const Subject, Body:string; Adjuntos: TStrings; SenderName, SenderEMail, RecepientName, RecepientEMail: string): integer;
var
...
  Archivo : string;
...
  // Adjuntos es un TStringList con la dirección de los archivos a adjuntar.
  if Adjuntos.Count > 0 then
  begin
     GetMem(Attachments, SizeOf(TMapiFileDesc) * Adjuntos.Count);

     for i := 0 to Adjuntos.Count - 1 do
     begin
        Archivo := Adjuntos[i];
        Attachments[i].ulReserved := 0;
        Attachments[i].flFlags := 0;
        Attachments[i].nPosition := ULONG($FFFFFFFF);
        Attachments[i].lpszPathName := StrNew(PChar(Archivo));
        Attachments[i].lpszFileName := StrNew(PChar(ExtractFileName(Archivo)));
        Attachments[i].lpFileType := nil;
     end;
     MapiMessage.nFileCount := Adjuntos.Count;
     MapiMessage.lpFiles := @Attachments^;
  end;
...
Responder Con Cita
  #6  
Antiguo 16-03-2018
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 7
nincillo Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Puedes utilizar esto también:
http://www.delphifaq.com/faq/delphi/network/f236.shtml

Envía correos utilizando el cliente de correo por defecto del ordenador.

Si tienes mas de un adjunto puedes modificar esa parte con esto:
Código Delphi [-]
  ArchivosAdjuntos := TStringList.Create;
  try
     ArchivosAdjuntos.Add('C:\Fotos\Foto1.jpg');
     ArchivosAdjuntos.Add('C:\Fotos\Foto2.jpg');
     ArchivosAdjuntos.Add('C:\Fotos\Foto3.jpg');
     SendMailMAPI('Prueba', 'Esto es una prueba', ArchivosAdjuntos, 'Pepito Perez', 'pepito.perez@gmail.com', 'Fulanito Ggarcia', 'fulanito.garcia@hotmail.com')
  finally
     ArchivosAdjuntos.Free;
  end;

function TDMListados.SendMailMAPI(const Subject, Body:string; Adjuntos: TStrings; SenderName, SenderEMail, RecepientName, RecepientEMail: string): integer;
var
...
  Archivo : string;
...
  // Adjuntos es un TStringList con la dirección de los archivos a adjuntar.
  if Adjuntos.Count > 0 then
  begin
     GetMem(Attachments, SizeOf(TMapiFileDesc) * Adjuntos.Count);

     for i := 0 to Adjuntos.Count - 1 do
     begin
        Archivo := Adjuntos[i];
        Attachments[i].ulReserved := 0;
        Attachments[i].flFlags := 0;
        Attachments[i].nPosition := ULONG($FFFFFFFF);
        Attachments[i].lpszPathName := StrNew(PChar(Archivo));
        Attachments[i].lpszFileName := StrNew(PChar(ExtractFileName(Archivo)));
        Attachments[i].lpFileType := nil;
     end;
     MapiMessage.nFileCount := Adjuntos.Count;
     MapiMessage.lpFiles := @Attachments^;
  end;
...
Que buena pinta tiene!!!.
Le voy a pegar un vistazo a ver si lo puedo integrar con el resto del programa que tengo hecho hasta ahora.

Muchas gracias.
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
Crear pdf y enviarlo por correo MAXIUM PHP 2 14-08-2013 10:06:16
¿ Cómo saber que cliente de correo está instalado por defecto en un PC ? Aldo Internet 5 12-06-2013 12:58:15
¿como eliminar adjunto en email indy 9 delphi 7? JXJ Varios 0 03-02-2013 03:45:49
email con indy cual uso ; server o cliente cmena Internet 13 15-09-2005 21:53:12


La franja horaria es GMT +2. Ahora son las 14:05:15.


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