Pas de problème (pb), que du PowerBuilder (PB) ^^

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 15: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 15:40:45)

Hors ligne

 

#2 19-07-2007 16: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 08: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 08: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 08: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
'La méthode CreateItem permet de créer un objet MailItem qui représente un nouveau message électronique. L'exemple suivant montre 'comment créer et afficher un nouveau message.

Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)
myItem.Display
    
'Pour renvoyer un seul objet MailItem d'un dossier Boîte de réception, utilisez la propriété Items(index), où index est le numéro d'index d'un 'message électronique ou une valeur correspondant à la propriété par défaut d'un message. L'exemple suivant montre comment définir le dossier 'en cours comme Boîte de réception et afficher le deuxième message électronique du dossier.

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
'Si un programme tente de faire référence à un type d'informations de destinataire en utilisant le modèle d'objet Outlook, une boîte de dialogue 'vous demande de confirmer l'accès à ces informations. Vous avez la possibilité d'autoriser l'accès au Carnet d'adresses ou aux informations de 'destinataire jusqu'à dix minutes après l'affichage de la boîte de dialogue. Cela permet à certaines fonctionnalités, telles que la synchronisation 'des périphériques, d'être exécutées jusqu'à la fin. 

'La boîte de dialogue de confirmation s'affiche lorsqu'une solution tente d'accéder via un programme aux propriétés suivantes de l'objet MailItem :

'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 13: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 // Libellé du compte Outlook
    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 13:29:43)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22