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 24-11-2006 08:18:24

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

[SOURCE] Envoi d'emails avec BLAT

Bonjour,

De nombreuses méthodes sont utilisées pour l'envoi de mails avec PB :
* objet PB mailSession : protocole MAPI
* outils "3rd party" : on en trouve par milliers sur internet, payants ou non, (aspemail, easymailobjects, ...)
* bibliothèques PB sur www.codexchange.sybase.com (Lotus Notes, Outlook, SMTP via PBNI)
....

Après avoir regardé un peu ces différentes approches, je me suis focalisé sur BLAT (www.blat.net) un petit outil gratuit très souple et indépendant du modèle de serveur de messagerie (à condition qu'il supporte le protocole SMTP) ou d'un quelconque client de messagerie. Bien évidemment il ne s'agit là que d'envoyer des messages. Pour pouvoir "en recevoir" avec PB, d'autres approches sont nécessaires, par exemple du côté du client, avec Outlook via OLE, ou avec un autre petit utilitaire.

BLAT est à la base un utilitaire de ligne de commande (syntaxe sur www.blat.net/syntax/syntax.html). Mais pour notre plus grand bonheur, il existe une DLL win 32 correspondante (www.geocities.com/toby_korn/blat), utilisable directement sous PB. Pour cela, il suffit de déployer la bibliothèque BLAT.DLL (112ko) avec l'application PB (téléchargement : home.earthlink.net/~tobykorn/blat/blat3_1.zip).


Exemple d'utilisation dans PB avec une petite classe n_mail :

1) Déclaration de la DLL dans les Global external functions :

Code: pb

Function Long SendBlat( String sCmd ) Library 'blat.dll' Alias For 'Send'

Cette fonction retourne le résultat de l'envoi du message : 0 si c'est OK. (liste des codes retour ici )


2) Classe n_mail :

Code: pb

$PBExportHeader$n_mail.sru
forward
global type n_mail from nonvisualobject
end type
end forward

global type n_mail from nonvisualobject
end type
global n_mail n_mail

type variables
String is_smtp      // adresse du serveur SMTP
String is_port      // port du serveur SMTP
String is_user      // utilisateur
String is_password  // mot de passe
String is_file      // fichier texte de BODY
String is_from      // expéditeur du message
String is_to        // liste destinataires du message (,)
String is_cc        // liste cc du message (,)
String is_bcc       // liste bcc du message (,)
String is_subject   // sujet du message
String is_attacht   // liste des fichiers attachés (,)
String is_log       // fichier log
String is_cmd       // ligne de commande

end variables

forward prototypes
public function string of_compute_cmd ()
public function long of_send ()
end prototypes

public function string of_compute_cmd ();
// génération de la ligne de commande
String ls_cmd = ''

// fichier du corps du message (en 1er)
ls_cmd += This.is_file

// paramètres du serveur
ls_cmd += ' -server "' + This.is_smtp     + '"'
ls_cmd += ' -port "'   + This.is_port     + '"'
ls_cmd += ' -u "'      + This.is_user     + '"'
ls_cmd += ' -pw "'     + This.is_password + '"'
ls_cmd += ' -f "'      + This.is_from     + '"'

// log
ls_cmd += ' -log "'    + This.is_log     + '"'

// paramètres du message
If This.is_subject <> '' Then ls_cmd += ' -subject "'  + This.is_subject + '"'
If This.is_to <> ''      Then ls_cmd += ' -to "'       + This.is_to      + '"'
If This.is_cc <> ''      Then ls_cmd += ' -cc "'       + This.is_cc      + '"'
If This.is_bcc <> ''     Then ls_cmd += ' -bcc "'      + This.is_bcc     + '"'
If This.is_attacht <> '' Then ls_cmd += ' -attach "'   + This.is_attacht + '"'
  
// assignation commande
This.is_cmd = ls_cmd

Return ls_cmd
end function

public function long of_send ();// envoi du message
Long ll_return

// 1. génération ligne de commande
This.of_compute_cmd( )

// 2. envoi du message
ll_return = SendBlat( This.is_cmd ) 

Return ll_return
end function

on n_mail.create
call super::create
TriggerEvent( this, "constructor" )
end on

on n_mail.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on

3) Utilisation dans un script :

Code: pb

Long   ll_return
n_mail lnv_mail

// instanciation de l'objet
lnv_mail = Create n_mail

// assignation des paramètres serveur 
// (il est possible de sauvegarder ces paramètres dans la base de registre, BLAT les chargera automatiquement)
lnv_mail.is_smtp      = 'smtp.mail.server'
lnv_mail.is_port      = 25
lnv_mail.is_user      = 'nom_utilsateur_messagerie'
lnv_mail.is_password  = 'mdp_utilsateur_messagerie'

// assignation des paramètres du message
lnv_mail.is_from      = 'expediteur@xxx.com'
lnv_mail.is_to        = 'dest1@zzz.com,dest2@yyy.com'
lnv_mail.is_cc        = 'copy1@zzz.com,copy2@yyy.com'
lnv_mail.is_bcc       = 'blindcopy1@zzz.com,blindcopy2@yyy.com'
lnv_mail.is_subject   = 'sujet_message'
lnv_mail.is_file      = 'c:\chemin_du_fichier_texte.txt' 
lnv_mail.is_attacht   = 'c:\chemin_attacht1.xls,c:\chemin_attacht2.doc'
lnv_mail.is_log       = 'c:\chemin_du_fichier.log'

// envoi du message
ll_return = lnv_mail.of_send( ) 

// notification
MessageBox( String( ll_return ), lnv_mail.is_cmd )

// destruction de l'objet
Destroy lnv_mail

J'ai implémenté des choses intéressantes à partir de cette base et cela fonctionne très bien.


Hope this helps.

Dernière modification par rsz (24-11-2006 08:43:09)


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

Hors ligne

 

#2 24-11-2006 08:33:37

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4655
Pépites: 933
Banque: 2,147,483,647
Site web

Re: [SOURCE] Envoi d'emails avec BLAT



  (+50 pepites dans ton compteur)


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 27-04-2007 11:44:39

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [SOURCE] Envoi d'emails avec BLAT

Salut,

J'ai essayé la solution proposée, pas moyen de la faire fonctionner en utilisant la blat.dll et le code fourni mais bien en utilisant
un Run() de blat.exe avec lem^me contenu de variable dans is_cmd.

Je préfèrerais la dll car au moins on peux gérer les code de retour.
Une idée du pourquoi cela pourrait ne pas fonctionner chez moi (PB10.5.1) ?

Hors ligne

 

#4 27-04-2007 11:59:20

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

Re: [SOURCE] Envoi d'emails avec BLAT

elbrizzio a écrit:

Salut,
J'ai essayé la solution proposée, pas moyen de la faire fonctionner en utilisant la blat.dll et le code fourni mais bien en utilisant
un Run() de blat.exe avec lem^me contenu de variable dans is_cmd.

quel est le code de retour lorsque tu lances SendBlat ? la DLL se trouve où ?


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

Hors ligne

 

#5 27-04-2007 12:19:40

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [SOURCE] Envoi d'emails avec BLAT

le code de retour est toujours 2
et la dll se trouve dans c:\blat262\full
déclarée dans PB comme suit

Code: pb

function long sendblat( string scmd ) library 'c:\blat262\full\blat.dll' alias for 'Send'


[edit] http://pbadonf.fr/forum/img/puntoolbar/smooth/bt_pre.png [ code=pb ]

Hors ligne

 

#6 27-04-2007 12:38:34

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

Re: [SOURCE] Envoi d'emails avec BLAT

code = 2 :     

    * The server actively denied our connection.
    * The mail server doesn't like the sender name.

ça te donne quoi un :

Code: dos

ping ton.serveur.stmp

#et

telnet ton.serveur.stmp 25


Pour info, ça marche très bien sous Citrix


Un petit conseil au passage, mets une copie de la dll dans le dossier de pbl principale et une dans le dossier de l'exécutable (avec pbvm.dll & cie) et déclare la fonction sans chemin :

Code: pb

function long sendblat( string scmd ) library 'blat.dll' alias for 'Send'


Ainsi ça marchera en mode dev et en mode exécutable qq soit le PC et tu ne sera pas obligé de maintenir le chemin dans tes sources.


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

Hors ligne

 

#7 27-04-2007 12:47:53

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [SOURCE] Envoi d'emails avec BLAT

Le ping fonctionne correctement.
Le telnet se plante.

Mais le Run() de blat.exe avec la même string de paramètre fonctionne correctement

Hors ligne

 

#8 27-04-2007 13:06:22

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

Re: [SOURCE] Envoi d'emails avec BLAT

elbrizzio a écrit:

Le ping fonctionne correctement.
Le telnet se plante.

Mais le Run() de blat.exe avec la même string de paramètre fonctionne correctement

c'est sur le port 25 ? c'est quoi le serveur de messagerie ?

tu as quoi dans ls_cmd de SendBlat( ls_cmd ) ?


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

Hors ligne

 

#9 01-05-2007 11:11:28

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

Re: [SOURCE] Envoi d'emails avec BLAT

petit tip au passage : il n'aime pas trop les espaces dans le subject... (je les remplace systématiquement par des underscores)


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

Hors ligne

 

#10 03-05-2007 06:55:27

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [SOURCE] Envoi d'emails avec BLAT

voilà this.is_cmd :  c:\mail.txt -server "POMEROL" -f "f.debode@be.spie.com" -subject "Test_mail_SMTP" -to "f.debode@be.spie.com"

Run("c:\blat262\full\blat " + this.is_cmd,Minimized!) passe correctment

le port est bien le 25 (d'ailleurs il le prend avec l'exe)

Hors ligne

 

#11 03-05-2007 07:09:02

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

Re: [SOURCE] Envoi d'emails avec BLAT

Salut, qq pistes possibles :

* essayer avec des guillemets autour de chaque valeur
* ajouter explicitement le port
* ajouter un log (pour debug)
* le nom POMEROL c'est le nom windows de la machine ? il ne fait pas partie d'un domaine ? pomerol.domaine.fr  ?
Essaye de remplacer le nom du serveur par son adresse IP

Code: pb

"c:\mail.txt" -server "12.25.1.10" -port "25" -f "f.debode@be.spie.com" -subject "Test_mail_SMTP" -to "f.debode@be.spie.com"
-log "c:\mail.log"


Pour info : as-tu utilisé le registre pour y stocker les paramètres par défaut ?


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

Hors ligne

 

#12 03-05-2007 07:29:03

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Envoi d'emails avec BLAT

Bonjour,

Le port 25 ne serait-il pas bloqué dans ta société par l'anti virus. C'est le cas chez nous pour les utilisateurs lambda ??

Hors ligne

 

#13 03-05-2007 07:41:06

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [SOURCE] Envoi d'emails avec BLAT

J'ai essayé avec l'adresse IP, le port 25, les guillemets , le log file (qu'il ne créée pas d'ailleurs ) ...  rien ne va

Pour le registre, je crois mais que oui mais à l'installation de l'exe de blat362. Mais j'ai depuis supprimé la clé de registre.

Et je ne crois pas que le port 25 soit bloqué puisqu'avec le run de l'exe cela passe.

La dll doit -ell être enregistré avec regsvr32 ?
Car si oui, c'est là que j'ai peut-être un problème, je reçois un message :

c:\blat\blat.dll was loaded but the DllRegisterServer Entry point was not found. The file can not be registred.

Hors ligne

 

#14 03-05-2007 07:47:31

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Envoi d'emails avec BLAT

ici pour l'install de Blat

effectivement cela doit se mettre dans la base de REgistre

Hors ligne

 

#15 02-09-2009 06:54:05

Aloneg  
Membre Geek
Date d'inscription: 14-02-2007
Messages: 30
Pépites: 1,182
Banque: 37,934,892,619

Re: [SOURCE] Envoi d'emails avec BLAT

Bonjour,

Nous avons besoin d'envoyer des mails avec certificats dans le cadre de notre développement... est-ce possible de le faire avec Blat ?
Je n'ai pas trouvé de référence à la gestion des certificats sur leur site...

En fait je me demande s'il est possible d'envoyer des mails avec certificats sans passer par une messagerie classique type Outlook... quelqu'un a-t-il déjà implémenté ça ?

Hors ligne

 

#16 02-09-2009 09:10:21

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [SOURCE] Envoi d'emails avec BLAT

Aloneg a écrit:

Bonjour,

Nous avons besoin d'envoyer des mails avec certificats dans le cadre de notre développement... est-ce possible de le faire avec Blat ?
Je n'ai pas trouvé de référence à la gestion des certificats sur leur site...

En fait je me demande s'il est possible d'envoyer des mails avec certificats sans passer par une messagerie classique type Outlook... quelqu'un a-t-il déjà implémenté ça ?

Bonjour,

Nous n'utilisons pas Blat, mais Aspemail, et cela fonctionne très bien voir Ici

Hors ligne

 

#17 11-12-2012 16:09:34

ydl  
Membre Geek
Date d'inscription: 23-10-2007
Messages: 62
Pépites: 10,341
Banque: 0

Re: [SOURCE] Envoi d'emails avec BLAT

Bonjour,
J'ai essayé d'enregistrer la dll version 3.0.7 en version 32 et 64 sur un w7, rien a faire.
C'est possible de l'enregistrer avec regsvr32 ?

Cordialement
Yann dulondel

Hors ligne

 

#18 12-12-2012 07:52:56

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

Re: [SOURCE] Envoi d'emails avec BLAT

ydl a écrit:

Bonjour,
J'ai essayé d'enregistrer la dll version 3.0.7 en version 32 et 64 sur un w7, rien a faire.
C'est possible de l'enregistrer avec regsvr32 ?

Cordialement
Yann dulondel

Bonjour, il n'y a pas besoin d'enregistrer la DLL.


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

Hors ligne

 

#19 12-12-2012 12:26:12

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: [SOURCE] Envoi d'emails avec BLAT

Bonjour,

Merci pour le partage !
Est-ce que la dll gère l'envoi de mail au format HTML ?

Merci

Hors ligne

 

#20 12-12-2012 14:05:12

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [SOURCE] Envoi d'emails avec BLAT

attention si c'est pour envoyer des emails en Français Blat gère assez mal les caractères accentués...


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#21 12-12-2012 17:23:09

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

Re: [SOURCE] Envoi d'emails avec BLAT

Ben53 a écrit:

Est-ce que la dll gère l'envoi de mail au format HTML ?

Je n'ai jamais essayé : à tester.

rincevent a écrit:

attention si c'est pour envoyer des emails en Français Blat gère assez mal les caractères accentués...

Et en utilisant les caractères spéciaux ?


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

Hors ligne

 

#22 13-12-2012 08:53:53

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [SOURCE] Envoi d'emails avec BLAT

j'ai fait certains tests, je n'ai pas réussi à faire passer les "é" ou les "è" correctement. y a peut être moyen mais je ne sais pas comment.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#23 13-12-2012 09:23:30

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: [SOURCE] Envoi d'emails avec BLAT

Via du quoted-printable ? (jamais joué avec blat)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#24 13-12-2012 13:30:10

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [SOURCE] Envoi d'emails avec BLAT

Via remplacer les "é" par un code du genre "=E9"


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#25 13-12-2012 14:10:45

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

Re: [SOURCE] Envoi d'emails avec BLAT

Je viens de faire le test d'accents : ça passe correctement aussi bien dans le sujet du message que dans le corps...


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

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22