Aucun code d'envoi de mail ne marche chez moi

cs_hastalavista Messages postés 38 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 26 février 2008 - 20 févr. 2008 à 10:35
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 24 févr. 2008 à 02:26
bonjour,
j'ai telecharger tout les codes VB6 sur ce site pour l'envoi d'un mail via smtp (plus que 40 code) mais aucun d'eux ne marche; enfin je pense que le probleme est de ma machine puisque dans les commentaire de ces codes il y a toujorus des gents qui disent que ces codes fonctionne trés bien;
je vous explique, je suis connécté a Internet via le proxy de ma entreprise ca peut etre ça ce qui merde mais le probleme c'est que je developpe une application dont je demande d'envoyer des string a une adresse mail par un simple clique sur un bouton envoyer. mes client seront eux aussi connecté via un proxy ... meme condition que moi alors si ca ne marche pas sur mon PC ca sera le cas pour eux.
svp il faut que je finisse cette tache, j'ai presque tout fait mais ce smtp ...
par la meme occasion : l@ mail du distibataire est statique, c'est preferable d'utiliser un smtp gratuit mais pour essayer qlq code j'ai crée des mails sur yahoo, hotmail, gmail ... (pour la configuration de la connexion au smtp)
j'ai besoin d'aide
merci d'avance

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 févr. 2008 à 12:21
toujours pas davantage de précision sur "ne marche pas" ?

soucis de communication ? serveur injoignable ? données non transmises ?
données incompréhansibles recues ? .........
0
cs_hastalavista Messages postés 38 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 26 février 2008
20 févr. 2008 à 12:28
pas de mail envoyé,
y a des application qui affichent "mail envoyé avec succés" mais de l'autre coté je ne reçois rien,
y a des application qui plante le PC !!!
y a des application qui ne peuvent pas se connecter au serveur smtp
en fait ce qui me semble bizarre c'est la confirmation dans les commentaire que c'est testé et que ca marche trés bien !!
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 févr. 2008 à 12:51
Salut
En france, certains fournisseurs d'accès à internet bloquent les tentatives de connexion aux serveurs de mails sortants si on se trouve sur une connexion d'un autre fournisseur.
Par exemple, dans un hotel équipé chez Free, il n'est pas possible d'expédier des mails en se servant des serveurs SMTP de Orange, ceci afin de limiter les abus en matière de mass-mail.

En Tunisie, je ne sais pas comment ça se passe.
Tu tentes ces manips depuis chez toi ET vers le serveur SMTP associé à ton abonnement ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_hastalavista Messages postés 38 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 26 février 2008
20 févr. 2008 à 13:43
non je tente ces manip du boulot "serveur proxy" et vers
mail.club-internet.fr
mail.noos.fr
mail.oreka.fr
mail.hotmail.com
smtp.yahoo.com
....
mais j'ai pas reussi
si un message d'erreur est affiché je pourai au moins savoir ou ca bloque, mais ca l'aire de marcher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 févr. 2008 à 13:59
arretes toi sur le ou les codes les plus succeptibles de fonctionner, et tente un deboggage pas a pas
0
cs_hastalavista Messages postés 38 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 26 février 2008
20 févr. 2008 à 14:11
j'ai deja debogger, mais sur ma machine tout se passe bien, je pense que le probleme est au niveau du proxy ou au nuveau du serveur smtp.


moi ce que je voulais savoir c'est si qlq1 a developpé une application qui s'installe sur des machines client (différents Fournisseurs d'Acces Internet) et permetant d'envoyer un mail vers une @ statique.


si ca existe il faut que je fais un effort de plus (je recherche encore) mais si c'est pas fesable ... c'est pas la peine. il faut que je change vers php
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
23 févr. 2008 à 15:53
Je suis peut-être hors sujet, mais ce problème me rappelle quelque chose.
A l'époque, j'utilisais des fonctions du genre 'message CDO' piquées sur ce site. Ca fonctionnait nikel sans pour autant devoir créer un serveur 'virtuel' smtp.
Puis un virus Nasser est venu. L'oncle Bill a réagit en créant un patch. Depuis là, tous mes codes en relation avec CDO ne fonctionnait plus. Et pourtant, aucun message d'erreur, Windows me signalait que le mail avait été envoyé alors que c'était faux.
En fait, ce type de code fonctionnait très bien auparavant (avant un patch de Bill).

Bref, si ton code utilise CDO et que tu ne veux pas créer un serveur virtuel smtp, oublie ton code et choisi une autre direction...
par exemple l'API ShelExecut avec 'mailto:' en paramètre... nettement moins performant mais ça  fonctionne bien pour des cas simples.
En ce moment, je me casse aussi un peu la tête pour gérer l'envoi d'un mail digne de ce nom depuis mes prog VB.

titicar
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 févr. 2008 à 02:26
Re
Peu importe le destinataire (à propos de l'adresse fixe)
De toute façon, légalement, tu n'as le droit d'expédier des mails que depuis le serveur SMTP attribué à ton fournisseur d'accès (FAI).
Les messageries genre MSN et consor ne sont pas des SMTP.
Il faudra donc questionner l'utilisateur du logiciel afin qu'il saisisse les paramètres SMTP de son FAI + mot de passe du compte.
Sortie de ces considérations légales, le protocole SMTP a ses règles de programmation et de paramétrage : Voir RFC 2821

Pour ma part, mes logiciels émettent des fichiers sans nécessiter de paramétrage avec cette astuce :
Sur mon site internet, j'ai créé une page PHP qui accepte deux paramètres : du texte (CorpsMessage) et un fichier texte (FichierLOG)
Sous PHP, suffit juste de mettre cette déclaration dans un fichier index.php à une adresse web (voir listing après ce roman)
puis d'utiliser les fonctions "mail" de PHP pour renvoyer le mail avec ces infos vers mon adresse de messagerie personnelle.
Mes programmes envoyent une requète POST complète avec le texte (CorpsMessage) puis le contenu du fichier (FichierLOG), séparé avec les Boundary et tout le tralala.
Il faut regarder dans le protocole HTTP comment paramétrer cette requète.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés





<hr />

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)


Contenu de la page index.php :






<hr />

<HTML>
  <HEAD>
  </HEAD>

<?php
// Paramètres à fournir à l'appel
 $CorpsMessage = $_POST[CorpsMessage];  // Texte d'accompagnement
 $FichierLOG = $_POST[FichierLOG];    // Contenu du LOG

// Envoi du mail ----------------------------------------------------------------------------------
$boundary = '-----=Mail=-----' . md5( uniqid ( rand() ) );
// Texte du message
$message  = "--" . $boundary . "\n";
$message .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $CorpsMessage . "\n";
$message .= "--" . $boundary . "\n";
// Fichier joint = LOG --------------------------------------
$message .= "Content-Type: text/plain; name=Fichier.LOG\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment; filename=Fichier.LOG\n\n";
// When adding a file you must open it and read it with fopen and add the content to the message:
$content_encode = chunk_split(base64_encode($FichierLOG));
$message .= $content_encode . "\n";
$message .= "--" . $boundary . "\n";
// echo $message . "\n";
// Add the needed headers and send!
$headers  = "From: "TotoLaRiflette"<
[mailto:adresse@monsite.fr>\n
adresse@monsite.fr>\n
]
";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"";
//         Adresse,                   Objet,             Corps,    Entêtes
if (!mail(
[mailto:'destinataire@monsite.fr'
'destinataire@monsite.fr'
]
, 'Rapport d_erreur', $message, $headers))
//if (!mail($to,$subject,$mail,'To: '.$to.chr(13).chr(10).'From:
[mailto:webmaster@monsite.fr'.chr(13).chr(10
webmaster@monsite.fr'.chr(13).chr(10
]
)))
 {
  echoError('Un problème est survenu lors de l\'envoi du mail',1);
  exit();
 }
 else
 {
 echo "Ok. Mail expédié\n"; // ne pas modifier = texte de la réponse à l'expéditeur des données
 echo '';
 }
 // Finally, if you add an image and want it displayed in your email, change the Content-Type from attachment to inline:
// $message .= "Content-Disposition: inline; filename="$theFile"\n\n";
?>

</HTML>



Extrait du code VB nécessaire :
<hr />    Lien = "--" & Boundary & vbCrLf & _
           "Content-Disposition: form-data; name=""CorpsMessage""" & vbCrLf & _
                 vbCrLf & _
           Message & vbCrLf & _
           "--" & Boundary & vbCrLf & _
           "Content-Disposition: form-data; name=""FichierLOG""" & vbCrLf & _
                 vbCrLf & _
           ContenuFichier & vbCrLf & _
           "--" & Boundary & "--" & vbCrLf     ' se termine par --CrLf



    Entete = "POST " & mServeurHost & "/maPage/index.php" & "  HTTP/1.1" & vbCrLf
    Entete = Entete & "Host: monsite.fr" & vbCrLf & _
             "Accept-Language: fr" & vbCrLf & _
             "Content-Type: multipart/form-data; boundary=" & Boundary & vbCrLf & _
             "Accept-Encoding: text" & vbCrLf & _
             "User-Agent: " & sInternetCompatibility & vbCrLf & _
             sKeepAlive & vbCrLf & _
             "Content-Length: " & CStr(Len(Lien)) & vbCrLf & _
             "Cache-Control: no-cache" & vbCrLf & _
             vbCrLf
    monWinsock.SendData Entete & Lien


La réponse du serveur doit être : "Ok. Mail expédié"
(chaine écrite dans le script PHP)


"Boundary" est n'importe quelle chaine d'une 15n de caractères : sert de séparateur
Il faut simplement s'assurer que cette chaine ne se retrouvera pas dans un texte classique
Perso, je me suis créé une petite routine :
  Private Function CreateBoundary() As String
    Dim r As Integer
    Dim Temp As String
    ' Demande une réinit du moteur de hasard
    Randomize GetTickCount
    ' Génère 20 caractères hexadécimaux
    For r = 1 To 20
        Temp = Temp & Format(Hex$(Rnd * 15), "&&")
    Next r
    Temp = LCase(Temp)
    CreateBoundary = "----Jack_" & Temp
  End Function
"sKeepAlive" dépend de l'utilisation d'un proxy. Voir RFC
"sInternetCompatibility " dépend du navigateur que tu utilises.
0
Rejoignez-nous