IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

changer le compte email par défaut


Sujet :

Delphi

  1. #1
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut changer le compte email par défaut
    Bonjour,


    Je souhaiterai pouvoir changer par programme, le compte email à utiliser par défaut dans Outlook pour l'envoi d'email.

    Exemple :

    Dans Outlook, j'ai un compte email pro et un compte email perso et par défaut, les emails sont envoyés par le compte email perso (défini par défaut dans Outllook, Outils, Comptes).

    Ce que je voudrais, c'est pouvoir modifier par programme ce compte par défaut pour que, dans mon programme, lorsque j'envoie un email en utilisant simplemapi, le compte utilisé pour l'envoi soit mon email pro.

    Une fois l'email envoyé, je repositionnerai l'autre compte par défaut.

    Pas trés clair mais enfin...

    Merci pour votre aide.

    Michel

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Et il n'y a aucune option pour changer cela dynamiquement avant d'envoyer l'email ? Cela m'étonne un peu... (Regarde mieux dans les propriétés de ton objet, utilise l'aide aussi F1). je ne connais pas la lib Simplemapi donc, je ne peux pas essayer.

    Désolé

  3. #3
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    non, simplemapi ne permet pas de définir l'adresse email à utiliser, il prend celle définie par défaut...

  4. #4
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    J'ai trouvé des informations sur MSDN, au sujet de la structure MapiMessage (http://msdn2.microsoft.com/en-us/library/ms529146.aspx et http://msdn2.microsoft.com/en-us/library/ms529097.aspx).

    J'ai modifié ma procédure d'envoi d'email comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    procedure TSMapiSendMail.Send;
    var
      MapiMessage: TMapiMessage;
      Originator:TMapiRecipDesc;     // Ajouté
      NoteText: String;
    begin
      FillChar(MapiMessage, SizeOf(MapiMessage), 0);
     
      if Subject <> '' then
        MapiMessage.lpszSubject := PChar(FSubject);
     
      // Début de modification
      if FFrom <> '' then begin                 // FFrom comporte l'adresse email type xxx@domaine.com
        FillChar(Originator, SizeOf(TMapiRecipDesc),0);
        Originator.ulRecipClass := MAPI_ORIG;
        Originator.lpszName := PChar(FFrom);
        FFrom := 'SMTP:'+FFrom;                                    // SMTP: + 
    mail adress
        Originator.lpszAddress := PChar(FFrom);   
        Originator.ulEIDSize := 0;
        Originator.lpEntryID := nil;
        MapiMessage.lpOriginator := @Originator;
      end;
    // FIN DE MODIFICATION ********************
     
      NoteText := Body.Text;
      if Length(NoteText) >= 2 then
      begin
        NoteText := Copy(NoteText, 1, Length(NoteText) - 2);
        MapiMessage.lpszNoteText := PChar(NoteText);
      end;
     
      if MessageType <> '' then
        MapiMessage.lpszMessageType := PChar(FMessageType);
     
      if sfReceiptRequested in Flags then
        MapiMessage.flFlags := MAPI_RECEIPT_REQUESTED;
     
      try
        GetMapiRecipients(MapiMessage.nRecipCount, 
    PMapiRecipDescs(MapiMessage.lpRecips));
        GetMapiFiles(MapiMessage.nFileCount, 
    PMapiFileDescs(MapiMessage.lpFiles));
        Check(MAPISendMail(SessionHandle, Application.Handle, MapiMessage, 
    MapiFlags, 0));
      finally
        FreeMem(MapiMessage.lpRecips);
        FreeBuffers;
        FStrings.Clear;
      end;
    end;

    Pourtant les emails partent toujours avec le compte défini par défaut dans Outlook (Grrrrrrrrrr).

    Si quelqu'un a une idée...

  5. #5
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    pas d'idée ?

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Es tu vraiment obligé d'utiliser Outlook pour l'envoyer ? C'est tellement plus simple avec la suite Indy.

  7. #7
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    obligé non, mais je préfére utiliser le client mail par défaut, pour que ça parte en tâche de fond et que ça ne bloque pas mon appli...

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Appuie toi sur cet exemple tiré de la FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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(attachments[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;

  9. #9
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    est bien ce que j'ai fait, mais il ne tient pas compte de ce qui est mis en Originator.

    Il semblerait que je puisse modifier le compte à utiliser par lien Ole avec Outlook, le problème est que ça ne fonctionnera pas avec Outlook express ou d'autres clients de messagerie.

Discussions similaires

  1. changer le repertoire courant par défaut avant getopenfilename
    Par sambinapas dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/12/2010, 14h38
  2. Changer la page 404 par défaut de JBoss
    Par sandanr dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 28/08/2007, 17h33
  3. [Class Loader] changer le class loader par défaut
    Par Didier 69 dans le forum Langage
    Réponses: 1
    Dernier message: 17/10/2006, 14h02
  4. Réponses: 6
    Dernier message: 13/06/2006, 08h02
  5. Réponses: 2
    Dernier message: 10/05/2005, 19h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo