Mirror

How to use MAPI to auto-send new mail (Views: 100)


Problem/Question/Abstract:

How can I do ShellExecute(nil, 'open', 'mailto:abc@123.com', nil, nil, sw_shownormal) and auto-send new mail?

Answer:

You'd better try MapiSendMail. This uses the unit MAPI, if MAPI is configured correctly, this works quite fine.

uses
  Mapi;

{ ...}
var
  MapiMessage: TMapiMessage;
  MapiFileDesc: PMapiFileDesc;
  MError: Cardinal;
  FNStr: string;
  R, i: Integer;
begin
  FNStr := AttachedFileName;
  if R <> mrOK then
    exit;
  MapiFileDesc := New(PMapiFileDesc);
  try
    MapiFileDesc.lpszPathName := PChar(FNStr);
    MapiFileDesc.lpszFileName := '';
    with MapiMessage do
    begin
      ulReserved := 0;
      lpszSubject := nil;
      lpszNoteText := '';
      lpszMessageType := nil;
      lpszDateReceived := nil;
      lpszConversationID := nil;
      flFlags := 0;
      lpOriginator := nil;
      nRecipCount := 0;
      lpRecips := nil;
      nFileCount := 1;
      lpFiles := MapiFileDesc;
    end;
    MError := MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or
      MAPI_NEW_SESSION, 0);
    if MError <> 0 then
      MessageDlg(SSendError, mtError, [mbOK], 0);
  finally
    Dispose(MapiFileDesc);
  end;
end;

<< Back to main page