FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Comment rechercher et récupérer une entrée d'un carnet d'adresses ?
- Comment créer un contact dans un dossier contact particulier ?
- Comment créer un nouvel e-mail ?
- Comment créer un e-mail avec Outlook (version 2) ?
- Comment envoyer et/ou recevoir des e-mails ?
- Comment envoyer un e-mail avec le client mail par défaut ?
- Comment créer un élément Outlook ?
- Comment créer un contact dans le dossier de contacts par défaut ?
Une fois la connexion réalisée et le dossier récupéré on peut initialiser un objet TContactItem.
La méthode Find permet de rechercher un élément dans une collection d'items. On utilise la syntaxe suivante :
[nom_de_propriété]='valeur' and/or/not [nom_de_propriété]='valeur'
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | var DossierContact : MAPIFolder; UnContact: ContactItem; Filter:Olevariant; begin DossierContact := EspaceDeNom.GetDefaultFolder(olFolderContacts); // La recherche peut se faire sur tout ou partie du contenu d'une propriété //'[LastName] >= ''Da'' and [lastName] < ''Db'''; Filter:= '[LastName] = ''Dardenne'' and [FirstName] = ''Laurent'''; UnContact:=DossierContact.Items.Find(Filter) as ContactItem; if UnContact<>Nil then ListeAncienContacts.Items.Add(UnContact.FullName + ': ' + UnContact.Email1Address); end; |
Code delphi : | Sélectionner tout |
maPropriété: =UnContact.UserProperties.Find('DateDernierContact');
Une fois récupéré le dossier comme indiqué dans "Récupérer un dossier dans le dossier principal", seul le code de création du contact diffère.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 | ... AnciensContact:= Dossiers.Folders.Item(NomDossier); UnContact := AnciensContact.Items.Add(olContactItem) as ContactItem; UnContact.LastName := 'Nom'; ... // Idem Contact.Save; end; |
Pour créer un nouveau mail on appelle la méthode CreateItem de l'objet Application.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var DossierContact : MAPIFolder; UnMail : MailItem; begin // Crée un élément MailItem représentant un courrier électronique UnMail:=Outlook.CreateItem(olMailItem) as MailItem; // Ajoute un ou plusieurs destinataires UnMail.Recipients.Add('Nom@UrlServerMail.Fr'); UnMail.Subject := 'Au sujet d''Outlook'; // Ajoute un retour chariot pour séparer le corps du message des pièces jointes UnMail.Body := 'Corps du message envoyé'+#13#10; //Ajoute une ou plusieurs pièces jointes UnMail.Attachments.Add('C:\temp\Document.txt', olByValue, EmptyParam, EmptyParam); // Place le mail dans la boîte d'envoi, mais ne l'envoi pas. UnMail.Send; end; |
La collection attachments contient tous les pièces jointes au mail. D'après la documentation il est préférable d'enregistrer le mail avant de modifier la collection attachments.
Le code suivant vous permet de créer un nouveau mail avec OutLook à partir de Delphi.
Le code n'effectue aucune vérification notamment en ce qui est du format des adresses mails de destination.
Cette tâche est laissée au soin du lecteur.
Code delphi : | Sélectionner tout |
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 | type //Enumération qui décrit le niveau de priorité du mail enumImportance=(Bas=olImportanceLow,Normal=olImportanceNormal,Haut=olImportanceHigh); //Structure qui décrit entièrement le mail à envoyer TEmail = record dDateRecept : TDateTime; dDateCreation : TDateTime; sSenderName : String; sSenderMail : String; sCC : String; sDestinataires : String; sSujet : String; sContenu : String; iPriorite : enumImportance; iSize : integer; // en octet iNbPiecesJointes : integer; tCheminPiecesJointes : array of string; end; function TOutlook.CreerEmail(Mail : TEmail): boolean; var vMail : variant; i : integer; vRecipient : variant; lTemp : TStringList; begin Result := true; try //Création du mail vMail := vApplication.CreateItem(0); //Ajout des destinataires //On pourra éventuellement tester le format des adresses //ainsi que s'assurer que celles-ci sont séparées par un ; vRecipient := vMail.Recipients.Add(Mail.sDestinataires); vRecipient.Type := 1; if Mail.sCC <> '' then begin lTemp := TStringList.Create; lTemp.Delimiter := ';'; lTemp.DelimitedText := Mail.sCC; for i := 0 to lTemp.Count - 1 do begin vRecipient := vMail.Recipients.Add(lTemp.Strings[i]); vRecipient.Type := 2; end; lTemp.Free; end; //Ajout du sujet vMail.Subject := Mail.sSujet; //Ajout de la priorité vMail.Importance := Integer(Mail.iPriorite); //Ajout de pièce jointe for i := 0 to Mail.iNbPiecesJointes -1 do begin vMail.Attachments.Add(Mail.tCheminPiecesJointes[i]); end; //Affichage de l'Email vMail.Display; except Result := false; end; end; |
La méthode Send d'un objet MailItem ne prend pas en charge l''envoi des mails vers votre serveur de mails.
On doit utiliser les objets CommanBars déclarés dans l'unité Office2000 qui permet d'appeler le menu 'Envoyer/recevoir'.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | var MenuOutils: CommandBar; EnvoiRecoiMenuItem, ToutLesComptes: CommandBarControl; begin MenuOutils := (Outlook.ActiveExplorer.CommandBars as CommandBars).Item['Tools']; EnvoiRecoiMenuItem := MenuOutils.Controls['Envoyer/recevoir']; ToutLesComptes:= (EnvoiRecoiMenuItem.Control as CommandBarPopup).Controls['Tous les comptes']; ToutLesComptes.Execute; end; |
Le code suivant nous permet d'envoyer un mail avec le client par défaut.
Code delphi : | Sélectionner tout |
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 | function SendMail(const Subject, MessageText, MailFromName, MailFromAddress, MailToName, MailToAddress: String; const attachments: array of String; WinHandle: THandle = 0): boolean; var MAPIError: DWord; MapiMessage: TMapiMessage; Originator, Recipient: TMapiRecipDesc; Files, FilesTmp: PMapiFileDesc; FilesCount: Integer; begin FillChar(MapiMessage, Sizeof(TMapiMessage), 0); MapiMessage.lpszSubject := PChar(Subject); MapiMessage.lpszNoteText := PChar(MessageText); FillChar(Originator, Sizeof(TMapiRecipDesc), 0); Originator.lpszName := PChar(MailFromName); Originator.lpszAddress := PChar(MailFromAddress); MapiMessage.lpOriginator := @Originator; MapiMessage.nRecipCount := 1; FillChar(Recipient, Sizeof(TMapiRecipDesc), 0); Recipient.ulRecipClass := MAPI_TO; Recipient.lpszName := PChar(MailToName); Recipient.lpszAddress := PChar(MailToAddress); MapiMessage.lpRecips := @Recipient; MapiMessage.nFileCount := High(attachments) - Low(attachments) + 1; Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount); MapiMessage.lpFiles := Files; FilesTmp := Files; for FilesCount := Low(attachments) to High(attachments) do begin FilesTmp.nPosition := $FFFFFFFF; FilesTmp.lpszPathName := PChar(attchments[FilesCount]); Inc(FilesTmp) end; try MAPIError := MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0); result:= MAPIError = 0; finally FreeMem(Files) end end; |
La méthode CreateItem crée un nouvel élément Outlook et ne peut créer que des éléments Outlook dans les dossiers par défaut.
Pour créer des éléments à l'aide d'un formulaire personnalisé, utilisez la méthode Add sur la collection Items.
Code delphi : | Sélectionner tout |
OutlookApplication.CreateItem(ItemType)
- olAppointmentItem
- olContactItem
- olJournalItem
- olMailItem
- olNoteItem
- olPostItem
- olTaskItem
Dans ce cas on utilise la méthode Createitem de l'objet application.
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var OutlNamespace: Namespace; ContactFolder: MAPIFolder; Contact: ContactItem; begin Contact := Outlook.Createitem(olContactItem) as ContactItem; Contact.LastName := 'Nom'; Contact.FirstName := 'Prénom'; Contact.HomeAddressStreet := 'Rue'; Contact.HomeAddressCountry := 'France'; Contact.HomeAddressPostalCode := '75000'; Contact.HomeAddressCity := 'Paris'; Contact.HomeTelephoneNumber := '01 02 03 04 05'; Contact.HomeFaxNumber := '06 07 08 09 10'; Contact.Email1Address := 'Personne@Provider.com'; Contact.Save; end; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.