Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 19-07-2007 17:40:17

vincenteraptor  
Membre
Date d'inscription: 19-07-2007
Messages: 8
Pépites: 45
Banque: 0

Définir expéditeur mail outlook (OLE)

Bonjour à tous,

Voici une petite problématique mesdames et messieurs ;o)

Je désire donner la possibilité aux utilisateurs de l'application que je développe en PB d'envoyer des emails via Outlook.
Pour cela, j'ai un item menu qui permet d'ouvrir une fenêtre Outlook avec des données pré-renseignées (sujet, corps du mail).

Voici le code qui gère cela:

Code: pb

... 
//Creates a new mail 
Item lole_item = lole_outlook.CreateItem(0) 
//Set the subject line of message 
lole_item.Subject = ls_sujet_entier 
//Body of mail message 
lole_item.Body = ls_audi_txt 
lole_item.Display 
//displays the message 
lole_outlook.disconnectobject() 
...



Tout cela fonctionne sans problème.
Par contre je désire pré-renseigner également l'expéditeur
J'ai essayé de mettre

Code: pb

lole_item.From = "toto@toto.fr"

comme j'avais vu qu'il existait

Code: pb

lole_item.To = "toto@toto.fr"

pour définir le destinataire mais cela ne fonctionne pas

Quelqu'un sait s'il est possible de réaliser cela avec PowerBuilder V7?

Dernière modification par vincenteraptor (19-07-2007 17:40:45)

Hors ligne

 

#2 19-07-2007 18:06:21

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Définir expéditeur mail outlook (OLE)

Bonjour et bienvenu,

as-tu regardé dans le Browser d'objets PB ? en principe tu peux retrouver la liste des propriétés et méthodes de l'objet
peut-être qu'il y a un "setter" du genre :

Code: pb

lole_item.SetFrom("toto@toto.fr")

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 20-07-2007 10:13:38

vincenteraptor  
Membre
Date d'inscription: 19-07-2007
Messages: 8
Pépites: 45
Banque: 0

Re: Définir expéditeur mail outlook (OLE)

Très bonne idée (je ne connaissait même pas le Browser ;o) )!

Malheureusement je n'ai pas trouvé mon bonheur.
En effet, j'utilise apparemment des propriétés (Subject, Body, etc) de l'objet  lole_item. J'ai parcouru le Browser mais impossible de retrouver un objet de type "Item" pour avoir la liste des propriétés ou la fonction "CreateItem(0)".
J'ai été dans l'onglet OLE, puis j'ai regardé les objets liés à Outlook mais rien de lié au code que j'ai utilisé.

Voici une copie de l'endroit où j'ai cherché (j'ai fait un export RTF de la liste):

Code:

    Microsoft Office Outlook Recipient Control 
      Class Information 
      Functions 
    Microsoft Office Outlook Rich Format Control 
      Class Information 
      Functions 
    Microsoft Office Outlook View Control 
      Class Information 
      Properties 
        OleObject ActiveFolder 
        boolean DeferUpdate 
        boolean EnableRowPersistance 
        string Filter 
        string FilterAppend 
        string Folder 
        long ItemCount 
        string Namespace 
        OleObject OutlookApplication 
        string Restriction 
        datetime SelectedDate 
        OleObject Selection 
        string View 
        string ViewXML 
      Events 
        Activate() 
        BeforeViewSwitch(string newView, boolean Cancel) 
        SelectionChange() 
        ViewSwitch() 
      Functions 
        AddressBook() 
        AddToPFFavorites() 
        AdvancedFind() 
        Categories() 
        CollapseAllGroups() 
        CollapseGroup() 
        CustomizeView() 
        DeferUpdate(boolean DeferUpdate) 
        Delete() 
        EnableRowPersistance(boolean EnableRowPersistance) 
        ExpandAllGroups() 
        ExpandGroup() 
        Filter(string Filter) 
        FilterAppend(string FilterAppend) 
        FlagItem() 
        Folder(string Folder) 
        ForceUpdate() 
        Forward() 
        GoToDate(string newDate) 
        GoToToday() 
        GroupBy() 
        MarkAllAsRead() 
        MarkAsRead() 
        MarkAsUnread() 
        MoveItem() 
        Namespace(string Namespace) 
        NewAppointment() 
        NewContact() 
        NewDefaultItem() 
        NewDistributionList() 
        NewForm() 
        NewJournalEntry() 
        NewMeetingRequest() 
        NewMessage() 
        NewNote() 
        NewOfficeDocument() 
        NewPost() 
        NewTask() 
        NewTaskRequest() 
        Open() 
        OpenSharedDefaultFolder(string bstrRecipient, int FolderType) 
        PrintItem() 
        Reply() 
        ReplyAll() 
        ReplyInFolder() 
        Restriction(string Restriction) 
        SaveAs() 
        SendAndReceive() 
        ShowFields() 
        Sort() 
        SynchFolder() 
        View(string dispidMember) 
        ViewXML(string ViewXML)

Et je ne retrouve même pas les propriétés Subject, Body, etc...

Est ce que je cherche au bon endroit?

Hors ligne

 

#4 20-07-2007 10:18:41

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Définir expéditeur mail outlook (OLE)

c'est quoi l'objet OLE que tu instancie :

Code: pb

lole_outlook.ConnectToNewObject ( "nom de l'ole" )

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 20-07-2007 10:54:58

vincenteraptor  
Membre
Date d'inscription: 19-07-2007
Messages: 8
Pépites: 45
Banque: 0

Re: Définir expéditeur mail outlook (OLE)

C'est

Code:

lole_outlook = create oleobject
li_rc = lole_outlook.ConnectToNewObject("outlook.application")

J'ai trouvé la liste des propriétés dans une documentation Visual Basic:

Code: vb

'Utilisation de l'objet MailItem

Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)
myItem.Display
    

Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
myFolder.Display
Set myItem = myFolder.Items(2)
myItem.Display
    
'Remarques


'SentOnBehalfOfName
'SenderName
'ReceivedByName
'ReceivedOnBehalfOfName
'ReplyRecipientNames
'To
'CC
'BCC
'Body
'HTMLBody
'Recipients
'SenderEmailAddress

Il existe bien la propriété "SenderEmailAddress" mais elle n'est accessible qu'en lecture :-(

Donc visiblement, il est impossible de gérer l'envoi de mail en définissant un expéditeur. Il faut que je regarde pour une autre solution, j'ai vu qu'il existait des fonctionnalités d'envoi de mail par "MAPI".  Quelqu'un a-t-il déjà utilisé cela ? Si oui, avec définition de l'expéditeur ?

Hors ligne

 

#6 02-04-2015 15:23:13

PAUTONNIER  
Membre
Lieu: Boulogne-Billancourt
Date d'inscription: 26-05-2006
Messages: 14
Pépites: 331
Banque: 0

Re: Définir expéditeur mail outlook (OLE)

Bonjour,

Je sais que ma réponse est plutôt tardive, mais étant moi-même confronté au problème je vous donne la solution que j'ai trouvée pour choisir le compte de l'expéditeur du mail.

Code: pb

Long ll_inc, ll_max, ll_find
String ls_name, ls_adresse, ls_user

ll_max = lole_outlook.session.accounts.count

ll_find = 0
FOR ll_inc = 1 TO ll_max
    ls_name = lole_outlook.session.accounts.item(ll_inc).DisplayName     ls_adresse = lole_outlook.session.accounts.item(ll_inc).SmtpAddress // Adresse mail du compte Outlook
    ls_user =lole_outlook.session.accounts.item(ll_inc).UserName // Nom de l'utilisateur
    IF Trim(lower(ls_adresse)) = Trim(Lower("xxxx@xxx.fr")) THEN
        ll_find = ll_inc
        Exit
    END IF
NEXT

IF ll_find > 0 THEN
     lole_item.SendUsingAccount = lole_outlook.session.accounts.item[ll_find]
     /********* display the message ********/
     //lole_item.Display()
     /****** send the message *********/
     lole_item.Send()
END IF


Thierry

Dernière modification par PAUTONNIER (02-04-2015 15:29:43)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22