Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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:
... //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
lole_item.From = "toto@toto.fr"
comme j'avais vu qu'il existait
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
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 :
lole_item.SetFrom("toto@toto.fr")
Hors ligne
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):
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
c'est quoi l'objet OLE que tu instancie :
lole_outlook.ConnectToNewObject ( "nom de l'ole" )
Hors ligne
C'est
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:
'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
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.
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