Ya que andamos de ofrecidos, les dejo esta función con su explicación:
Código Delphi
[-]
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)
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.