Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Voilà quelques heures que je cherche sans trouver (forcément)... et après avoir traversé la toile dans différentes langues : anglais, français et espagnol (si, si y'a du PB en Espagne comme les Charlots) je me décide de quémander votre aide gracieuse !
Comme dit dans l'intitulé du topic, j'essaie d'envoyer un mail automatique via un script qui va choper les infos à envoyer dans un fichier (cf mon dernier sujet :P).
Je fais ma tambouille... je teste... tout roule super sur mon poste de dév... Je génère donc l'exe et tout content, je veux faire une démo au demandeur en lançant l'exe (qui se lancera auto tous les 10 du mois via une tache planifiée) et paf... non pas le chien... mais rien !
Je blêmis et donc je repars dans mon labo de magie noire pour chercher ce qui ne va pas !
Je teste chez moi... ça passe... Je teste sur le serveur ça passe pas ! J'identifie la cause... à savoir que lors de l'envoi du mail la fonction mailSend me renvoie toujours "mailReturnUserAbort!".
Donc... ma question est simple... Avez-vous une idée du pourquoi ???
PS : j'ai demandé à un collègue de lancer l'exe... idem, rien ne se passe !
Dernière modification par jordel (05-10-2012 07:28:08)
Hors ligne
Au cas ou... voici un peu de code ;)
mailSession mSes mailMessage mMsg mailReturnCode mRet mailRecipient mRecip1 long ll_flag=0 //Création de la session mSes = create mailSession mRet=mSes.mailLogon(mailNewSession! ) if mRet<>mailReturnSuccess! then Messagebox("Groupwise","Problèmede connexion") ll_flag=1 end if if ll_flag<>1 then // Création de la structure du message mMsg.Subject = as_sujet mMsg.NoteText= as_texte mRecip1.Address = as_destinataire mRecip1.Name = as_destinataire mRecip1.RecipientType = mailTo! mMsg.Recipient[1] = mRecip1 //Envoi du mail mRet=mSes.mailsend(mMsg) if mRet<>mailReturnSuccess! then ll_flag =1 end if end if mSes.mailLogoff() destroy mSes if ll_flag<>1 then return true else return false end if
Dernière modification par jordel (26-09-2012 15:29:09)
Hors ligne
Si l'exe chez toi fonctionne ainsi que sur le serveur (mailSendretourne mailReturnSuccess!), ca ne pourrait pas être un souscis de client mail / paramétrage droits / protection antivirus ?
j'ai fais le test sur mon poste de dev et j'ai une dialogue Outlook :
A program is trying to automatically send e-mail on your behalf. Do you want to allow this?
If this is unexpected, it may be a virus and you should choose "No".
[yes][no][help]
Hors ligne
je pensais la même chose, pour éviter ces soucis de config client mail perso pour l'envoi de mail depuis PB .je préfère utiliser une dll externe comme blat et un serveur smtp
très marrante la façon de décrire ton problème sinon ^^ j'aime le "labo de magie noire"
Hors ligne
Bonjour,
L'objet mailSession utilise la couche MAPI (Message Application Programming interface) pour fonctionner. Cette couche est en générale pré installée sur les systèmes de dernière génération.
Je pense qu'elle est absente sur ton serveur (mapi32.dll, ... doit exister dans C:\Windows\System32). Le mieux est d'installé un client e-mail qui en général va se charger d'installer la couche MAPI si elle est manquante.
Hors ligne
xlat a écrit:
Si l'exe chez toi fonctionne ainsi que sur le serveur (mailSendretourne mailReturnSuccess!), ca ne pourrait pas être un souscis de client mail / paramétrage droits / protection antivirus ?
j'ai fais le test sur mon poste de dev et j'ai une dialogue Outlook :
A program is trying to automatically send e-mail on your behalf. Do you want to allow this?
If this is unexpected, it may be a virus and you should choose "No".
[yes][no][help]
Oui ça fonctionne chez moi mais pas sur le serveur !!! J'ai checké les confs du client de messagerie (novell groupwise 8) et tout est similaire... j'ai testé en désactivant l'antivirus... aucun résultat positif et j'ai testé avec mes identifiants novell... aucun résultat positif non plus.
rincevent a écrit:
je pensais la même chose, pour éviter ces soucis de config client mail perso pour l'envoi de mail depuis PB .je préfère utiliser une dll externe comme blat et un serveur smtp
très marrante la façon de décrire ton problème sinon ^^ j'aime le "labo de magie noire"
Merci... j'aime bien présenté de façon différente mes posts Cela donne un aspect créatif au truc :P
Sinon... j'ai testé avec blat... mais je me fais copieusement insulté par mon programme... le bougre !!! J'ai repris le code trouvé ici http://pbadonf.fr/forum/viewtopic.php?id=2280 et aménagé façon Valérie Damidot et j'ai toujours un code erreur 12 : http://www.blat.net/examples/blat_return_codes.htm
buck a écrit:
Bonjour,
L'objet mailSession utilise la couche MAPI (Message Application Programming interface) pour fonctionner. Cette couche est en générale pré installée sur les systèmes de dernière génération.
Je pense qu'elle est absente sur ton serveur (mapi32.dll, ... doit exister dans C:\Windows\System32). Le mieux est d'installé un client e-mail qui en général va se charger d'installer la couche MAPI si elle est manquante.
Oui... ayant pas mal bourlingué sur du dév autour de la téléphonie (sur IP ou non), c'était l'une de mes 1eres vérifs concernant la présence de MAPI sur les postes et la prise en charge de MAPI par groupwise 8.
Dernière modification par jordel (27-09-2012 10:25:46)
Hors ligne
Et sinon... un big non pas bisou mais merci pour vos messages
Hors ligne
le lien vers la page des codes retour d'erreur de blat ne fonctionne pas apparemment.
sinon blat c'est jamais qu'un exe a qui on passe des params en ligne de commande ce qui est pratique pour débugger, peut être ton problème est dans la construction de la string de ligne de commande ?
bien sûr faut avoir l'adresse du serveur smtp et aussi un uid/pwd si le serveur smtp est configuré comme ça.
Ah oui, petit détail qui a son importance, si je me souviens bien il est obligatoire d'indiquer une adresse mail pour l'expéditeur (donc le "FROM" du mail) sinon ça passe pas.
Hors ligne
Pour le lien... j'avais insérer le '.' de ma phrase dedans... d'où son non fonctionnement !
Je viens de lancer ma commande directement en commande dos... et j'obtiens ce message dans les logs : "Error: Server refused connection." qui semble correspondre à l'erreur 2 maintenant... ça progresse
Doit y avoir une coquille au niveau du serveur smtp !!!
Dernière modification par jordel (27-09-2012 13:03:06)
Hors ligne
Bonjour,
Pour éliminer les problèmes pouvant venir d'un éventuel blocage de la communication du port smtp 25 sur le serveur, tu peux lancer en ligne de commande :
> telnet smtp.orange.fr 25 réponse : 220 mwinf5d33 ME ESMTP server ready
Si tu n'obtiens pas en réponse le message d'accueil du serveur smtp, le port 25 est certainement bloqué par un firewall et ton serveur smtp n'est pas accessible à partir du serveur.
Hors ligne
Oui... J'ai testé cela entre temps... Hélas pour moi, les ingés réseaux ne sont pas là
To be continued !!!
Hors ligne
Re les gens
Alors... il y avait bien un problème mais lié localement à l'antivirus !!! Une superbe règle cachée aux users standards !!!
Donc... maintenant j'arrive à envoyer des mails en ligne de commande avec blat... mais pas via mon appli PB !!!
J'ai toujours l'erreur 2...
Hors ligne
Si ça marche en ligne de commande ça doit marcher depuis PB aussi, vérifie la construction de ta string je dirais.
tu as quelle erreur exactement la 12 ou la 2 ?
n'hésites pas à nous coller la string que tu utilises histoire qu'on puisse voir si qqchose nous choque.
Hors ligne
Etant donné que j'ai mis dans le registre du serveur les infos du serveur SMTP via la commande install, voici la chaine utilisée dans PB : C:\mail.txt -to "prenom.nom@entreprise.fr"
C'est bien l'erreur 2 que j'obtiens !
Dernière modification par jordel (28-09-2012 12:13:18)
Hors ligne
heureusement que je précise dans mon 2eme message "Ah oui, petit détail qui a son importance, si je me souviens bien il est obligatoire d'indiquer une adresse mail pour l'expéditeur (donc le "FROM" du mail) sinon ça passe pas."...
et que lecode d'erreur 2 te dit que "The mail server doesn't like the sender name."
Hors ligne
Peut-être un simple problème de relai refusé par le serveur ?
L'adresse mail de l'expéditeur doit être accepté par le serveur (= sur le même domaine, à moins que le serveur soit spécifiquement paramétré pour relayer les messages d'un autre domaine) sinon il va rejeter.
Exemple : le serveur de masociete.fr acceptera les envois pour l'utilisateur titi@masociete.fr (et éventuellement ceux de toto@succursale.fr si c'est prévu) mais il y a une forte probabilité qu'il refuse les mails de moi@gmail.com...
Hors ligne
rincevent a écrit:
heureusement que je précise dans mon 2eme message "Ah oui, petit détail qui a son importance, si je me souviens bien il est obligatoire d'indiquer une adresse mail pour l'expéditeur (donc le "FROM" du mail) sinon ça passe pas."...
et que lecode d'erreur 2 te dit que "The mail server doesn't like the sender name."
Le "From" y est puisqu'il est enregistré dans le registre avec l'adresse du serveur ;)
seki a écrit:
Peut-être un simple problème de relai refusé par le serveur ?
L'adresse mail de l'expéditeur doit être accepté par le serveur (= sur le même domaine, à moins que le serveur soit spécifiquement paramétré pour relayer les messages d'un autre domaine) sinon il va rejeter.
Exemple : le serveur de masociete.fr acceptera les envois pour l'utilisateur titi@masociete.fr (et éventuellement ceux de toto@succursale.fr si c'est prévu) mais il y a une forte probabilité qu'il refuse les mails de moi@gmail.com...
Je vois bien ce que tu veux dire mais non, ce n'est pas possible car j'utilise un smtp interne avec des adresses internes... donc théoriquement (validé par les ingés réseaux) tout est ok !
Le pire c'est que ma ligne de commande C:\mail.txt -to "prenom.nom@entreprise.fr" fonctionne en ligne de commande "cmd" !!!
Hors ligne
jordel a écrit:
et que lecode d'erreur 2 te dit que "The mail server doesn't like the sender name."
Autant pour moi alors mais bon... tu nous facilite pas vraiment la tâche en mettant certains params dans la registry et dans un fichier de config...
perso je fais d'abord tout "en ligne" puis une fois que ça fonctionne j'essaye éventuellement de "déporter"des paramètres dans registry/fichier de cfg.
Hors ligne
Ah mais j'avais testé en ligne de commande avec tous les params et all was right !
Du coup, au lieu de me tartiner des lignes de conf en plus dans mon programme (ou mes futurs progs), j'ai introduit (sauvagement... car il aime ça) les params dans le registre du serveur ;)
Hors ligne
Bon... je crois que je vais me permettre d'envoyer un mail aux créateurs de Blat si les mails sur leur site sont toujours d'actu :P
Hors ligne
Finalement... j'ai opté pour le combo suivant qui fonctionne :
- création d'un batch appelant blat %1 -to %2 (étant donné que le reste est dans le registre de la machine)
- appel du batch dans mon programme PB
And all is right
C'est un peu une siouxerie mais bon... ça dépanne !
Hors ligne
c'était pas juste un problème de quotes ?
Hors ligne
Je ne pense pas... Mais bon, pour le moment mon dépannage convient :P
Hors ligne