TEAMMANAGER : MULTIPOSTAGE SMS+MAIL

pekeo -=the ex of pekinio=- - 5 sept. 2001 à 15:08
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018 - 14 juil. 2002 à 12:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/1835-teammanager-multipostage-sms-mail

cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
14 juil. 2002 à 12:26
Attention : msmapi32.ocx plante parfois sous Windows 9x (il semble bien marcher sous Win2k), parfois il provoque l'erreur n° 30000 : "Erreur au chargement de la DLL MAPI". Même un faisant un package d'installation, avec VB6 Setup Wizard ou bien avec Visual Studio Installer 1.1, cela ne résout pas le problème : l'envoie de mail risque de ne pas marcher dans un Windows 98 vierge de tout logiciel spécifique.
Quand il n'y a pas de fichier joint au mail, on pourrait remplacer l'ocx par une API très simple, mais les sauts de lignes ne sont pas supportés et il faut valider chaque envoi :

' API pour la sub EnvoyerEMail
Private Declare Function ShellExecute& Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, _
ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, _
ByVal nShowCmd&)

Public Sub EnvoyerEMail(sAdresse$, Optional sSujet$, _
Optional sContenu$, Optional sCC$, Optional sCCC$)

Dim sCmd$

' Créé la chaîne de commande avec les paramètres fournis
If Len(sSujet) Then sCmd = "&Subject=" & sSujet
' Pb : les sauts de ligne dans le contenu ne sont pas gérés !?
If Len(sContenu) Then sCmd = sCmd & "&Body=" & sContenu
' Ne marche pas avec Outlook Express :
'If Len(sFichierJoint) Then sCmd = sCmd & "&Attach='" & sFichierJoint & "'"
If Len(sCC) Then sCmd = sCmd & "&CC=" & sCC ' Copie carbonne
If Len(sCCC) Then sCmd = sCmd & "&BCC=" & sCCC

' Remplace le premier '&' (s'il existe) par un '?'
If Mid(sCmd, 1, 1) "&" Then Mid(sCmd, 1, 1) "?"

' Ajoute la commande 'mailto:' et l'adresse
sCmd = "mailto:" & sAdresse & sCmd

' Execute la commande par l'API
Const SW_SHOWNORMAL& = 1
Call ShellExecute(0, "open", sCmd, _
vbNullString, vbNullString, SW_SHOWNORMAL)

End Sub
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
26 avril 2002 à 08:50
Note : il est inutile de fermer outlook, il suffit de mettre à False les 2 options suivantes dans le ctrl MAPISession :
DownLoadMail = False
LogonUI = False
Et l'envoi de mail ne fait plus planter Outlook, on peut même préparer l'envoi de mail en hors-ligne sans problème.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
3 avril 2002 à 13:45
Ya du nouveau ! allez voir www.vbfrance.com/listeauteur2.asp?Val=5457
ce sont les contributions de buisson.sf@caramail.com sur les sms
apparement, il a trouvé un nouveau serveur de sms gratuit :
Form2.WebBrowser1.Navigate "http://www.freetexto.com/ModuleSend.php3?from=" & Text1.Text & "&to=" & Text2.Text & "&msg=" & Text3.Text & ""
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
16 févr. 2002 à 08:43
note : les SMS ne marchent plus depuis Octobre 2001, car le serveur web utilisé ne sert plus les SMS gratuitement, il faut en trouver un autre...
Le batch : ça sert pour pourvoir revenir en arrière en cas de modification du code source !

Bonne nouvelle : les SMS marchent !
en tout cas au moins 1, car pour plusieurs SMS consécutifs, je ne sais pas si la pause de 2 secondes qui figurait dans le code src original est suffisant. Il faudrait peut être plutôt récupérer un évènement Web.NavigateComplete après l'appel de Web.Navigate. Au fait, je n'ai pas de téléphone mobile, alors si quelqu'un veut faire le test... il faut parfois attendre une journée pour recevoir le SMS !
Mauvaise nouvelle : les destinataires des SMS risquent de recevoir ... de la pub !!!
bah ! si on regarde le bon coté des choses, pour que le service soit pérenne et donc qu'il reste gratuit pour nous, il faut bien qu'il y en ait qui paye !

Pour information :
MSDN : "you can use the Busy property of the WebBrowser control to wait until the browser has finished loading the document. Also, you can use the NavigateComplete event of the WebBrowser control to signal that the document has finished loading."

Donc :

Web1.Navigate sServeurSMS & "?num=" & sMobile & "&mess=" & Me!TxtMessage
Do
DoEvents
Loop While Web1.Busy

J'ai essayé, mais il reste toujours occupé à partir du second SMS, il faut peut être réinitialiser quelque chose. Autre solution :

bNavigateComplete = False ' Variable globale au formulaire
Web1.Navigate sServeurSMS & "?num=" & sMobile & "&mess=" & Me!TxtMessage
Do
DoEvents
Loop While Not bNavigateComplete

Private Sub Web1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
bNavigateComplete = True
End Sub

Même résultat ! ça serait bien si ça marchait quand même !
pekeo -=the ex of pekinio=-
5 sept. 2001 à 15:08
y sert a quoi ton batch?
Rejoignez-nous