Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   E-Mail-Eigenschaft ändern (https://www.delphipraxis.net/155451-e-mail-eigenschaft-aendern.html)

RaSoWa1 24. Okt 2010 10:53

E-Mail-Eigenschaft ändern
 
Hallo,
ich komme nicht weiter. Ich brauche mal wieder eure Hilfe.

Ich habe ein Programm geschrieben, in dem ich mit nachfolgenden Code eine E-Mail mit Anhang verschicke. Auf dem Rechner ist Outlook 2003 installiert.
Es funktioniert fast alles. Nur bei einigen Empfängern kommt der Anhang als "winmail.dat" an und kann von denen nicht gelesen werden.
Die Ursache habe ich gefunden. Outlook und alle Kontakt wurden, wie hier und hier beschrieben, auf das Textformat umgestellt.
Wenn ich jetzt eine E-Mail manuell erstelle und an einen in den Kontakten gespeicherten Empfänger senden, kommt der Anhang richtig an.
Wenn ich aber die E-Mail mit meinem Programm erstelle, muß ich vor dem Senden immer die E-Mail-Eigenschaft "Internetformat" des Empfängers manuell auf "Nur Text" ändern, auch wenn die E-Mail-Adresse in den Kontakten mit der richtigen Einstellung gespeichert ist.

Wie kann ich beim Erstellen der E-Mail mit meinem Programm sicherstellen, das die E-Mail im Textformat gesendet wird, ohne das der Nutzer diese Eigenschaft manuell ändern muß?

Ich hoffe ihr könnt mir helfen.

Gruß
Klaus

der Code:
Delphi-Quellcode:
function Create_Email(eHandle: Hwnd; eReceiver, eSubject, eBody, eFiles: String): integer;
const
  MaxFiles = 255;
type
  TAttachAccessArray = array [0 .. MaxFiles] of TMapiFileDesc;
var
  Mapi_Message: TMapiMessage;
  Receip         : TMapiRecipDesc;
  Attachments    : TAttachAccessArray;
  i              : integer;
  Mapi_Session   : Cardinal;
  WndList        : Pointer;
  FileList       : TStringList;
  FileName       : array [0 .. MaxFiles] of AnsiString;
begin
  result := MapiLogon(eHandle, Nil, Nil, Mapi_Logon_Ui or Mapi_New_Session, 0, @Mapi_Session);
  if result = Success_Success then
  begin
    FillChar(Mapi_Message, SizeOf(Mapi_Message), #0);
    FillChar(Receip, SizeOf(Receip), #0);
    if eReceiver <> '' then
    begin
      Receip.ulReserved := 0;
      Receip.ulRecipClass := Mapi_To;
      Receip.lpszName := PAnsiChar(AnsiString(eReceiver));
      Receip.lpszAddress := PAnsiChar('SMTP:' + AnsiString(eReceiver));
      Receip.ulEIDSize := 0;
      Mapi_Message.nRecipCount := 1;
      Mapi_Message.lpRecips := @Receip;
    end;
    FileList := TStringList.Create;
    try
      FileList.Text := eFiles;
      if FileList.Count > 0 then
      begin
        if FileList.Count > MaxFiles then
        begin
          result := -MaxInt;
          exit;
        end;
        for i := 0 to FileList.Count - 1 do
        begin
          FileName[i] := AnsiString(FileList[i])+#0;
          Attachments[i].ulReserved := 0;
          Attachments[i].flFlags := 0;
          Attachments[i].nPosition := ULONG($FFFFFFFF);
          Attachments[i].lpszPathName := PAnsiChar(FileName[i]);
          Attachments[i].lpszFileName := Nil;
          Attachments[i].lpFileType := Nil;
        end;
        Mapi_Message.nFileCount := FileList.Count;
        Mapi_Message.lpFiles := @Attachments;
      end;
    finally
      FileList.Free;
    end;
    if eSubject <> '' then
      Mapi_Message.lpszSubject := PAnsiChar(AnsiString(eSubject));
    if eBody <> '' then
      Mapi_Message.lpszNoteText := PAnsiChar(AnsiString(eBody));
    WndList := DisableTaskWindows(0);
    try
      result := MapiSendMail(Mapi_Session, eHandle, Mapi_Message, Mapi_Dialog, 0); // original!
    finally
      EnableTaskWindows(WndList);
    end;
    MapiLogOff(Mapi_Session, eHandle, 0, 0);
  end
  else
    result := -result;
end;

mkinzler 24. Okt 2010 10:55

AW: E-Mail-Eigenschaft ändern
 
Schalte in Outlook den Versand im RTF-Format ab

RaSoWa1 24. Okt 2010 11:24

AW: E-Mail-Eigenschaft ändern
 
Im Outlook steht natürlich alles auf TEXT (Nachrichtenformat und Internetformat). Habe es ganau so wie in den Links meines 1. Threads angegeben gemacht. Dennoch ist das Internetformat bei einem neuen Empfänger das olle RTF-Format. Ootlook sendet dann auch in diesem Format.

Muß vielleicht noch ein Cache geleert werden?

sx2008 24. Okt 2010 13:22

AW: E-Mail-Eigenschaft ändern
 
Auch der Exchange Server, der im Hintergrund von Outlook werkelt hat über das Format mitzuentscheiden.
Der Administrator soll mal etwas tun für sein Geld und im Exchange Server die entsprechenden Einstellungen vornehmen.
Verhindern, dass die Datei "Winmail.dat" an Internetbenutzer gesendet wird


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz