Ver Mensaje Individual
  #4  
Antiguo 30-04-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
Ya que andamos de ofrecidos, les dejo esta función con su explicación:
Código Delphi [-]
{Esta función analiza la extensión del archivo pasado como parámetro y nos
devuelte un MIMETYpe adecuado para enviar por mail como adjunto si la extension
no es reconocida se manda como genérico.
}
function GetMIMEType(afilename: string): String;
var Ext: string;
begin
  Ext := UpperCase(ExtractFileExt(afilename));

  if Ext='.PDF' then
   Result := 'application/pdf'
   else
     if Ext='.ZIP' then
       Result := 'application/zip'
     else
        if Ext='.MP3' then
         Result := 'audio/mpeg'
       else
       if (Ext='.JPG') OR (Ext='.JPEG') then
         Result := 'image/jpeg'
       else
         if (Ext='.XLS')  then
           Result := 'application/vnd.ms-excel'
         else
          if (Ext='.XLSX') then
            Result := 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
         else
           if (Ext='.DOC')  then
            Result := 'application/msword'
           else
           if (Ext='.DOCX')  then
            Result := 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
           else
            Result := 'application/octet-stream';


end;

En donde la usamos:

Código Delphi [-]
  With TIdAttachmentFile.Create(Mensaje.MessageParts,adjunto) do
                 ContentType := GetMIMEType(adjunto)

// Mensaje es un objeto de la case TIdMessage, adjunto es una variable que contiene el nombre del archivo con extensión que se desea enviar

Es recomendable fijar la propiedad ContentType debido a que algunos servicios de correo, sobre todo los de empresas, no reconocen las extensiones por defecto y en algunos casos sencillamente el mensaje aparecerá como si no trajera adjunto. Se pueden añadir mas tipos a la función que puse, los tipos los pueden obtener de aquí o bien aqui que también viene completo. Atención a que no hay que meter todos los tipos de manera forzada, solo los que consideren que su aplicación va a manejar.
__________________
AKA "El animalito" ||Cordobés a mucha honra||

Última edición por AzidRain fecha: 30-04-2012 a las 23:28:41.
Responder Con Cita