Coltrain
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору SANIOK_AV Цитата: можно ли как-то автоматизировать (в Делфи) и как это лучше сделать: создание нового письма в MS Outlook загнав в тему письма определённую информацию, в текст письма текст из файла (либо из RichEdit) и прикрепить к письму определённый файл | Можно при помощи MAPI. Примерно так: Цитата: uses MAPI; .... type TPathName=Array[0..MAX_PATH] of Char; .... Function SendMail(ARecepients, ASubject, AMessage, AFiles: string): integer; var tmpName2 : TPathName; MapiMessage : TMapiMessage; MapiFileDesc : TMapiFileDesc; ToRec : TMapiRecipDesc; MError : Cardinal; MAPI_Session : Cardinal; Flag : Integer; WndList : Pointer; begin MError := MapiLogon(Application.Handle,PChar(''),PChar(''), MAPI_LOGON_UI or MAPI_NEW_SESSION, 0, @MAPI_Session); if MError <> SUCCESS_SUCCESS then begin result := MError; MessageDlg('Ошибка при установлении сесси. Связывайтесь с разработчиком программы',mtError,[mbOK],0); Exit; end; FillChar(MapiMessage,SizeOf(MapiMessage),#0); FillChar(ToRec,SizeOf(ToRec),#0); FillChar(MapiFileDesc,SizeOf(MapiFileDesc),#0); ToRec.ulReserved := 0; ToRec.ulRecipClass := 0; ToRec.lpszName := PChar(''); ToRec.lpszAddress := Pchar(ARecepients); ToRec.ulRecipClass := MAPI_TO; ToRec.ulEIDSize := 0; ToRec.lpEntryID := nil; With MapiFileDesc do begin ulReserved:=0; flFlags:=0; nPosition:=Cardinal(-1); lpszPathName:=PChar(AFiles); StrPCopy(tmpName2,ExtractFileName(AFiles)); lpszFileName:=tmpName2; lpFileType:=nil; end; with MapiMessage do begin ulReserved := 0; lpszSubject := PChar(ASubject); lpszNoteText := nil; lpszMessageType := nil; lpszDateReceived := nil; lpszConversationID := nil; flFlags := 0; lpOriginator := nil; nRecipCount := 1; lpRecips := @ToRec; nFileCount := 1; lpFiles := @MapiFileDesc; end; WndList := DisableTaskWindows(0); // Flag := MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION // Flag := MAPI_LOGON_UI Flag := MAPI_DIALOG; try MError:=MapiSendMail(0, Application.Handle, MapiMessage, Flag, 0); finally EnableTaskWindows(WndList); end; MAPILogOff(MAPI_Session, Application.Handle,0,0); result := MError; end; |
|