Comment avec PHP envoyer un e-mail via Lotus Notes ? code p

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment avec PHP envoyer un e-mail via Lotus Notes ? code p

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par @rthur » 09 mai 2013, 15:49

par exemple ici http://www.ibm.com/developerworks/lotus ... omino-php/

ils te propose plusieurs façon pour accéder au serveur domino.

as tu téléchargé les exemples de code sur la page que tu indique ?
As-tu essayé les exemples que t'as indiqués Moogli ?
Car c'est la doc officielle de Lotus Notes et visiblement il y a exactement ce que tu cherches : "Create and send a mail message"

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par moogli » 09 mai 2013, 15:30

on va faire simple :
1/ le but du forum est de t'aider pas de faire le boulot à ta place et tu n'aide en rien a poster plusieurs le même code VBA sur un forum PHP
2/ Ça marche pas c'est pas correcte (ça ne fonctionne pas si tu veux :mrgreen: ) et ça n'aide en rien, tu as eu une erreur t'indiquant une exception non récupéré, mais tu n'a même pas essayé de la récupérer.
3/ si tu ne fait pas d'effort (et que tu ne le montre pas) on t'aidera pas plus.


tu a un code que tu as récupéré c’est normale qu'il ne fonctionne pas directement il faut adapter au moins le fichier lotus et t n'indique rien à ce sujet.

le code que tu poste n'est pas syntaxiquement correct.

test ton code, ajoute la capture d'exception qui t’indiquera l'erreur et la ligne où elle se produit.

Montre nous le code que tu aura testé et l'erreur capturé sans cela tu n'aura pas plus d'aide.


@+

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 09 mai 2013, 15:08

mon service info me dit pas possible d utiliser le smtp de lotus me dit qu'il faut adapter le php $ Session = new COM ("Lotus.NotesSession"); comme le fait le VBA avec Access

Je ne sait pas faire cela pour php car debutant comment adapter mon code php svp ?
voir ci-dessous code VBA à adapter est trouver l equivalence pour Php

[VB]
Private Sub Commande3_Click()

DoCmd.Hourglass True


Dim Recipient(5) As Variant 'pour deux destinataires mais tu peux faire un tableau variable
Dim Attachment(3) As Variant 'pour 3 pièces jointes mais tu peux aussi faire un tableau variable
Dim Sujet As Variant
Dim CorpsMess(5) As Variant
Dim CorpsMess2 As Variant
Dim BodyText As String
Dim SaveIt As Boolean
Dim Subject As String


Recipient(0) = Dest1
Recipient(1) = Dest2
Recipient(2) = Dest3
Recipient(3) = Dest4
Recipient(4) = Dest5
Sujet = Objet
CorpsMess(0) = Lib_1
CorpsMess(1) = Lib_2
CorpsMess(2) = Lib_3
CorpsMess(3) = Signat
CorpsMess(4) = Tel_1
CorpsMess(5) = Tel_2

Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail databasename
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
'Start a session to notes

'DoCmd.OutputTo acReport, "E-Mail-liste", "SnapshotFormat(*.snp)", "C:\TEMP\E-Mail-liste.snp", False, ""
DoCmd.OutputTo acReport, "E-Mail-liste", "PDFFormat(*.pdf)", "C:\TEMP\E-Mail-liste.pdf", False, ""
Set Session = CreateObject("Notes.NotesSession")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = Recipient 'Envoi à tous les destinataires
MailDoc.Subject = Sujet
MailDoc.body = CorpsMess

'MailDoc.ReturnReceipt = "1"

MailDoc.SAVEMESSAGEONSEND = SaveIt
'Set up the embedded object and attachment and attach it
Attachment(0) = "C:\TEMP\E-mail-liste.pdf"
For I = 0 To 2
If Attachment(I) <> "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment(" & I & " )")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment(I), "Attachment(" & I & " )")
'mailDoc.CREATERICHTEXTITEM ("Attachment(" & i & " )" )
End If
Next I


'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.SEND 0, Recipient
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing

MsgBox "L'envoi du message par Lotus Notes a été correctement effectué!", vbExclamation, "Confirmation"

DoCmd.Hourglass False


End Sub[/VB]

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par @rthur » 09 mai 2013, 01:12

Contact ton service informatique et demande si ils ont un serveur SMTP que tu pourrais utiliser.

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 09 mai 2013, 00:06

Alors, j'ai l'impression que tu veux utiliser ton client de messagerie pour envoyer un mail en PHP alors qu'en réalité il faut que PHP envoie lui même le mail vers ton serveur de messagerie (fourni par ton FAI ou ton entreprise).

Plusieurs questions donc :
Le serveur sur lequel va être hébergé ta page PHP, est-il (1) sur un serveur géré par un hébergeur ou (2) sur ton propre PC ?
(1) Si il est sur un serveur géré par un hébergeur
=> utilise juste la fonction mail() et ça devrait fonctionner, à défaut contacte ton hébergeur.

(2) Si il est sur ton propre PC (ou sur un serveur dont tu peux modifier le paramétrage),
(2a) es-tu sur un réseau internet d'une entreprise ou (2b) sur un réseau internet grand public ?

(2a) Si tu es sur un réseau d'entreprise, demande à ton service informatique l'adresse du serveur SMTP pour l'envoi de mail et ensuite il faudra que tu mettes cette adresse dans le fichier php.ini de configuration de PHP sur ton PC.
(2b) Si tu es sur un réseau d'un FAI grand public, alors il faut que tu récupères le SMTP (en général une recherche Google : smtp.free.fr pour Free, smtp.orange.fr pour Orange, smtp.sfr.fr pour SFR, smtp.bbox.fr pour Bouygues...) et idem que tu l'indiques dans le fichier php.ini de configuration de PHP sur ton PC.
A-/ pour moogli j ai essayé tt les codes précédent sa ne marche pas... pourriez-vous m aider au niv de mon code, ou me proposer qq chose qui fonctionne ?

Voici mes réponses pour Arthur :
(1)mon application php est sur mon poste est en localhost pas d' hébergeur et je serai le seul utilisateur, ma messagerie est lotus pour envoyer un mail mon but envoyer depuis mon appli (la télécommander) OK pour quoi pas utiliser la fonction mail(), mais ne sait pas faire.
(2) serveur localhost
(2a)l'adresse du serveur SMTP de lotus c'est comment en générale ?
(2b)Non ce n'est pas un réseau grand public. Je suis stagiaire et mon but est de Commander piloter lotus notes par php sur mon pc uniquement pour moi.
J'ai un compte lotus notes. Et je dois gérer l'envoi de mail via une application PHP.
Je dois passer obligatoirement par lotus notes et par ma session pour l'envoi et la réception e mail.
comment faire sur mon pc ?
Mais dans mon cas c que moi qui va utiliser cette application car je dispose de lotus sur mon PC et elle est installé que sur mon poste,
j 'ai créé une appli en php en locale qui requête sur ma bdd mysql mais il est plus pratique de passer par lotus car il tourne bien pour envoyer des mails et ce pour des raisons de sécurité intranet.

Le but : cliquer sur un bouton de mon appli php, celui ci ouvre lotus et envoi au destinataire, je serai le seul à utiliser cette appli.

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par yann18 » 08 mai 2013, 16:33



je suis entrain de faire une appli (en php) et parmi les fonctionnalités de cet l'outil il ya l'envoi d'émail.Cependant j'arrive pas à les envoyer en utilisant des serveurs SMTP externes (question de sécurité), ils sont bloqué a chaque fois par le pare feu( je pense) .
Parmi les solutions a la quelle j'ai penser c'est d'utiliser le serveur SMTP interne qui est utilisé par la messagerie (IBM LotusNotes 7) .
ma question est la suivante est ce que vous savez comment puis-je
Commander piloter lotus notes par php sur mon pc uniquement pour moi.
un serveur smtp est destiné à envoyer des emails et ne peut aucunement refusé d'envoyer des emails sous prétexte d'un quelconque pare-feu qui bloque cela n'a pas de sens.tout serveur smtp doit en effet définir des ports par lesquels tout programme extérieur( client de messagerie) doit pouvoir entrer en communication avec le serveur smtp.

Passer par lotus, qui en outre n'est qu'un client de messagerie parmi tant d'autres, pour envoyer un email en php n'a ni de sens ni d’intérêt sinon celui de complexifier l'application car php étant un langage serveur est capable de communiquer directement avec un serveur smtp.

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par moogli » 08 mai 2013, 15:47

tu as plusieurs exemple que tu indique toi même, on ne sais pas si les as testé.

je ne sais pas si tu as compris le fonctionnement réseau de la chose.
si tu utilise le serveur smtp oriente toi vers phpmailer.

pour le reste il faut que tu test les codes PHP que tu indique, il n'y pas de recette magique.
ceux sont plus ou moins clair, mais globalement, ce qu'il faut c'est indiquer le fichier de conf, dans le script

test, indique les erreurs, ce qui ne va etc etc.

maintenant peux être "absolument passer par lotus notes" peux changer. Lotus c'est propriétaire, pas forcément courant s'il n'y a pas d'ouverture et de chose existante c'est complexe ;)

@+

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 08 mai 2013, 15:38

Sa marche pas,

Voila je me retourne auprès de vous parce que je suis bloqué sur un problème et parce que je sais que j'aurais une aide de votre part.
Mon problème est le suivant :
je suis entrain de faire une appli (en php) et parmi les fonctionnalités de cet l'outil il ya l'envoi d'émail.Cependant j'arrive pas à les envoyer en utilisant des serveurs SMTP externes (question de sécurité), ils sont bloqué a chaque fois par le pare feu( je pense) .
Parmi les solutions a la quelle j'ai penser c'est d'utiliser le serveur SMTP interne qui est utilisé par la messagerie (IBM LotusNotes 7) .
ma question est la suivante est ce que vous savez comment puis-je
Commander piloter lotus notes par php sur mon pc uniquement pour moi.
J'ai un compte lotus notes. Et je dois gérer l'envoi de mail via une application PHP.
Je dois passer obligatoirement par lotus notes et par ma session pour l'envoi et la réception e mail.
Auriez-vous une idée ?
Mais dans mon cas c que moi qui va utiliser cette application car je dispose de lotus sur mon PC et elle est installé que sur mon poste,
j 'ai créé une appli en php en locale qui requête sur ma bdd mysql mais il est plus pratique de passer par lotus car il tourne bien pour envoyer des mails et ce pour des raisons de sécurité intranet.

Le but : cliquer sur un bouton de mon appli php, celui ci ouvre lotus et envoi au destinataire, je serai le seul à utiliser cette appli.

comment piloter lotus par des lignes de commande dans mon code faire le plus simple.
php]<?php
$destinataire = "....[email protected]";
echo "Ce script envoie un mail à $destinataire";
mail($destinataire, "test email 1", "merci pour ton tutorial");

?>[/php]

Merci de votre aide

Merci de votre aide

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par moogli » 05 mai 2013, 23:29

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 05 mai 2013, 21:00

Bonjour,

J'ai testé le deuxième maintenant j 'ai que des messages d'erreurs, sa ne fonctionne pas fatal error: Uncaught exception 'com_exception'.
Peux-tu m aider à codé qq chose de simple ?


1 er code :
<? Php
/ / Lancer la session Lotus Notes
$ Session = new COM ("Lotus.NotesSession");
$ Session-> Initialize ();

/ / Affiche le nom de l'utilisateur Notes courant
print "Utilisateur actuel:". $ Session-> CommonUserName. "\ N \ n";

/ / Obtenir poignée de base de données
$ Db = $ session-> getDatabase ("", "mailtest.nsf");

/ / Obtenir vue manipuler en utilisant la poignée de base de données précédemment reçues.
/ / Notez que le caractère réservé dans le nom de la vue doit être \-échappa 
$ View = $ db-> getView ("(\ $ Brouillons)");

/ / Obtenir le premier document en vue en utilisant la poignée de vue déjà reçu
$ Doc = $ view-> getFirstDocument ();

/ / Boucle jusqu'à ce que tous les documents en vue sont traitées
while (is_object ($ doc)) {

/ / Obtenir la poignée pour un champ appelé "Objet"
$ Field = $ doc-> GetFirstItem ("Subject"); 

/ / Retourne la valeur de texte du champ
$ Fieldvalue = $ field-> text;

/ / Afficher la valeur du champ
imprimer "Subject:". $ Fieldvalue. "\ N";

/ / Obtenir document suivant dans la vue
$ Doc = $ view-> getNextDocument ($ doc);
}
/ / Libération de l'objet de session
$ Session = null;
>
2nd code :

<? Php 
--- Un peu de code ici - 
 
$ Session_notes = new COM ("Lotus.NotesSession"); 
 
$ Session_notes-> Initialize ("<password>"); 
print "Utilisateur actuel:" $ session_notes-> CommonUserName.. "\ N \ n"; 
 
$ Db = $ session_notes-> getDatabase ("", "Test.nsf") or die ("Impossible d'obtenir base de données"); 
$ Session_notes -> ConvertMime = FALSE; 
 
$ My_stream = $ session_notes -> CreateStream (); 
 
$ Email_object = $ db -> CreateDocument (); 
 
$ Email_object -> ReplaceItemValue ("Form", "Memo"); 
 
$ Corps = $ email_object -> CreateMIMEEntity (); 
 
$ BodyHeader = $ corps -> CreateHeader ("Content-Type"); 
 
$ BodyHeader -> SetHeaderVal ("multipart / mixed"); 
 
$ BodyHeader = $ corps -> CreateHeader ("Subject"); 
 
$ BodyHeader -> SetHeaderVal ("message MIME»); 
 
$ BodyHeader = $ corps -> CreateHeader ("A"); 
 
$ BodyHeader -> SetHeaderVal ("[email protected]"); 
 
/ / Problème avec cette ligne
$ Enfant = $ corps -> createChildEntity ();
 
$ My_stream -> WriteText ("<html> C'est le premier enfant </ html>"); 
 
$ Enfant -> SetContentFromText ($ my_stream, "text / plain", ENC_NONE); 
 
$ My_stream -> truncate (); 
 
$ Enfant = $ corps -> createChildEntity (); 
 
$ My_stream -> WriteText ("<html> C'est le deuxième enfant </ html>"); 
 
$ Enfant -> SetContentFromText ($ my_stream, "text / plain", ENC_NONE); 
 
$ Email_object -> Send (false); 
 
$ Session_notes -> ConvertMime = TRUE; 
 
> 
fatal error: Uncaught exception 'com_exception'

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par moogli » 05 mai 2013, 17:15

Le premier ce n'est pas du php, ne pas ce fier au nom du site.

le second est utilisable et ressemble à ce que tu as déja indiqué.

tant que tu ne test pas ce code, en indiquand ton fichier nsf tu ne pourras pas avancer.


@+

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 05 mai 2013, 13:14

Voici des exemples pour qui sa fonctionne couramment ? qui peu me confirmer SVP ?


http://www.phpcs.com/forum/sujet-ENVOIE ... 2.aspx?p=2

http://bytes.com/topic/php/answers/6466 ... otus-notes


Merci les pros

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 04 mai 2013, 15:44

sa marche presque sa communique qvec lotus, j'ai un message bizzare
J'ai pas réussie pourriez vous m'aiguller svp ? que dois-je installer svp ?? j'ai confiance en vous les pros ...

pour cela voici Avec language VBA Access sa fonctionne arrive à ouvrir lotus et envoyer des mails sans utiliser quoi que soit comme serveur..;

voici du VBA peut on pas faire la même chose en php ?? Merci les pros
MsgBox "L'envoi du message par Lotus Notes a été correctement effectué!", vbExclamation, "Confirmation"
 
    DoCmd.Hourglass False
Private Sub Commande3_Click()
 
DoCmd.Hourglass True
 
 
Dim Recipient(5) As Variant 'pour deux destinataires mais tu peux faire un tableau variable
Dim Attachment(3) As Variant 'pour 3 pièces jointes mais tu peux aussi faire un tableau variable
Dim Sujet As Variant
Dim CorpsMess(5) As Variant
Dim CorpsMess2 As Variant
Dim BodyText As String
Dim SaveIt As Boolean
Dim Subject As String
 
 
Recipient(0) = Dest1
Recipient(1) = Dest2
Recipient(2) = Dest3
Recipient(3) = Dest4
Recipient(4) = Dest5
Sujet = Objet
CorpsMess(0) = Lib_1
CorpsMess(1) = Lib_2
CorpsMess(2) = Lib_3
CorpsMess(3) = Signat
CorpsMess(4) = Tel_1
CorpsMess(5) = Tel_2
 
        Dim Maildb As Object 'The mail database
        Dim UserName As String 'The current users notes name
        Dim MailDbName As String 'THe current users notes mail databasename
        Dim MailDoc As Object 'The mail document itself
        Dim AttachME As Object 'The attachment richtextfile object
        Dim Session As Object 'The notes session
        Dim EmbedObj As Object 'The embedded object (Attachment)
        'Start a session to notes
 
        'DoCmd.OutputTo acReport, "E-Mail-liste", "SnapshotFormat(*.snp)", "C:\TEMP\E-Mail-liste.snp", False, ""
        DoCmd.OutputTo acReport, "E-Mail-liste", "PDFFormat(*.pdf)", "C:\TEMP\E-Mail-liste.pdf", False, ""
        Set Session = CreateObject("Notes.NotesSession")
        'Get the sessions username and then calculate the mail file name
        'You may or may not need this as for MailDBname with some systems you
        'can pass an empty string
        UserName = Session.UserName
        MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
        'Open the mail database in notes
        Set Maildb = Session.GETDATABASE("", MailDbName)
         If Maildb.IsOpen = True Then
                    'Already open for mail
         Else
                 Maildb.OPENMAIL
         End If
        'Set up the new mail document
        Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "Memo"
        MailDoc.sendto = Recipient 'Envoi à tous les destinataires
        MailDoc.Subject = Sujet
        MailDoc.body = CorpsMess
 
        'MailDoc.ReturnReceipt = "1"
 
        MailDoc.SAVEMESSAGEONSEND = SaveIt
        'Set up the embedded object and attachment and attach it
        Attachment(0) = "C:\TEMP\E-mail-liste.pdf"
        For I = 0 To 2
        If Attachment(I) <> "" Then
                Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment(" & I & " )")
                Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment(I), "Attachment(" & I & " )")
                'mailDoc.CREATERICHTEXTITEM ("Attachment(" & i & " )" )
        End If
        Next I
 
 
        'Send the document
        MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
        MailDoc.SEND 0, Recipient
        'Clean Up
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing
 
        MsgBox "L'envoi du message par Lotus Notes a été correctement effectué!", vbExclamation, "Confirmation"
 
    DoCmd.Hourglass False
 
 
End Sub

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par moogli » 01 mai 2013, 21:48

hum, je parlais d'essayer le code que tu indique.

par exemple ici http://www.ibm.com/developerworks/lotus ... omino-php/

ils te propose plusieurs façon pour accéder au serveur domino.

as tu téléchargé les exemples de code sur la page que tu indique ?

fonction exec


on va pas le faire pour toi, pour cela il y a le forum emploi :)

@+

Re: Comment avec PHP envoyer un e-mail via Lotus Notes ? cod

par debutant10 » 01 mai 2013, 18:44

Re moogli :

1-/il faut que tu te mette dans la tête que le but c'est pas d'ouvrir Lotus notes --> OK
2-/il faut que tu utilise le serveur lui même, il n'y a aucun intérêt à utiliser un client tiers pour envoyer un mail --> OK comment faire ?
3-/après pour démarrer lotus sur el pc il te suffit d'utiliser exec et passer en paramètre l’emplacement du lotus.exe
essai les codes que tu indique voir ce que cela donne. (modifie les éventuelle utilisateur / mot de passe).

c'est quoi exec ?
et passer en paramètre l’emplacement du lotus.exe --> comment faire ?

<? php

       require_once "Mail.php" ; //cette fonction appelle une commande ? 

        TEST =  "[email protected]" ; 
        $ à =  "[email protected]" ; 
        $ subject =  "Test" ; 
        $ corps =  "Salut, \ n \ Ntest?" ;

        $ Host =  "d23abcd" ; //Que dois-je mettre ici  ? 
        $ le port =  "1352" ; //Quelle port à mettre ici  ? 
        $ username =  "[email protected]" ; 
        $ password =  "motdepasse" ; //mon password lotus   ? 

        $headers = array ('From' => $from,
          'To' => $to,
          'Subject' => $subject);
        $smtp = Mail::factory('smtp',
          array ('host' => $host,
            'port' => $port,
            'auth' => true,
            'username' => $username,
            'password' => $password)); //mon password lotus ici aussi  ? 

        $ Mail = $ smtp -> send ( $ pour , $ headers , $ corps );

        si  ( PEAR :: isError ( $ mail ))  { 
          echo ( "<p>"  . $ mail -> getMessage ()  .  "</ p>" ); 
         }  autre  { 
          echo ( "<p> Message envoyé avec succès < / p> " ); 
         }

    >
Rappel : access le fait bien en cliquant sur un bouton le mail et envoyer comment faire avec php ?