1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| unit MapiMail;
//======================================================== interface //========================================================
type TMapiMail=class private public Procedure SendMapiMail(HWnd: THandle; Subject, Text, FromName, FromAdress, ToName, ToAdress, AttachedFileName, DisplayFileName: string; Dialog: Boolean); end;
//======================================================== implementation //======================================================== uses Mapi, Dialogs;
Procedure TMapiMail.SendMapiMail(HWnd: THandle; Subject, Text, FromName, FromAdress, ToName, ToAdress, AttachedFileName, DisplayFileName: string; Dialog: Boolean); var MMessage : TMapiMessage; MError : Cardinal; Empfaenger : Array[0..1] of TMapiRecipDesc; Absender : TMapiRecipDesc; Datei : Array[0..1] of TMapiFileDesc; Begin with MMessage do begin ulReserved := 0; lpszSubject := PChar(Subject); // subject lpszNoteText := PChar(Text); // text lpszMessageType := nil; lpszDateReceived := nil; lpszConversationID := nil; flFlags := 0; Absender.ulReserved:=0; // sender Absender.ulRecipClass:=MAPI_ORIG; Absender.lpszName:= PChar(FromName); Absender.lpszAddress:= PChar(FromAdress); Absender.ulEIDSize:=0; Absender.lpEntryID:=nil; lpOriginator := @Absender; nRecipCount := 1; Empfaenger[0].ulReserved:=0; // receiver Empfaenger[0].ulRecipClass:=MAPI_TO; Empfaenger[0].lpszName:= PChar(ToName); Empfaenger[0].lpszAddress:= PChar(ToAdress); Empfaenger[0].ulEIDSize:=0; Empfaenger[0].lpEntryID:=nil; lpRecips := @Empfaenger; nFileCount := 1; // max attachment count Datei[0].lpszPathName:= PChar(AttachedFilename); // filename on hd Datei[0].lpszFileName:= PChar(DisplayFilename); // shown filename Datei[0].ulReserved:=0; Datei[0].flFlags:=0; Datei[0].nPosition:=Cardinal(-1); Datei[0].lpFileType:=nil; lpFiles := @Datei; end; if Dialog then MError := MapiSendMail(0, HWnd, MMessage, MAPI_DIALOG or MAPI_LOGON_UI, 0) // send! else MapiSendMail(0, HWnd, MMessage, 0, 0);
case MError of // see mapi.pas for errorcodes MAPI_E_FAILURE: MessageDlg('Unknown error!',mterror,[mbok],0); MAPI_E_TEXT_TOO_LARGE: MessageDlg('Message to long!',mterror,[mbok],0); MAPI_E_INSUFFICIENT_MEMORY: MessageDlg('Not enough space!',mterror,[mbok],0); MAPI_E_TOO_MANY_RECIPIENTS: MessageDlg('To many receiver set!',mterror,[mbok],0); MAPI_E_TOO_MANY_FILES: MessageDlg('To many atachments set!',mterror,[mbok],0); MAPI_E_ATTACHMENT_NOT_FOUND: MessageDlg('Attached file not found',mterror,[mbok],0); MAPI_E_ATTACHMENT_OPEN_FAILURE: MessageDlg('Could not open atached files!',mterror,[mbok],0); MAPI_E_LOGIN_FAILURE: MessageDlg('Could not log into mail program!',mterror,[mbok],0); MAPI_E_BAD_RECIPTYPE: MessageDlg('Receiver-typ not MAPI_TO, MAPI_CC or MAPI_BCC!',mterror,[mbok],0); MAPI_E_USER_ABORT: MessageDlg('User canceled transmission or MAPI not installed!',mterror,[mbok],0); MAPI_E_AMBIGUOUS_RECIPIENT: MessageDlg('Receiver not specific enough! (Only possible if receivers adress not set)',mterror,[mbok],0); MAPI_E_UNKNOWN_RECIPIENT: MessageDlg('Could not find adress in Adressbook! (Only possible if receivers adress not set)',mterror,[mbok],0);
SUCCESS_SUCCESS: MessageDlg('OK',mtinformation,[mbok],0); end; End;
end. |