Envoi de mail anonyme (sans composant, ni dll)

Soyez le premier à donner votre avis sur cette source.

Vue 75 370 fois - Téléchargée 3 112 fois

Cette source est considérée comme dangereuse, elle a néamoins été gardée dans un but pédagogique :
Cette source est considérée comme dangereuse, elle a néamoins été gardée dans un but pédagogique.

Description

Donc comme sont nom l'indique ce programme permet d'envoyer des mails de façon anonyme, en se connectant directment à un serveur SMTP à l'aide d'une socket.

Utilisation et Explication :
----------------------------

Pour l'utilisation de ce soft, c'est trivial, il suffit de remplir les champs demandés...

Par contre un fichier est requis, dans cette archive il est nommé "mail.txt" et il contient la trame SMTP qui sera envoyé au serveur.

Pour pouvoir envoyer votre mail, votre message devra être intégré à cette trame, c'est le logiciel qui le fait pour vous, mais çà sera à vous de lui dire à quel endroit,
pour celà il y à deux balise :

la balise #TEXT qui permet d'inserer votre message dans la trame à l'endroit dit et la balise #HTML qui fait la même chose mais convertie votre message au format HTML, si la trame
est au format HTML.

NB : Pour insérer des commentaires dans le fichier trame,
mettez un "!" devant la ligne.

Pourquoi ? parce qu'une trame externe permet d'adapté le
courrier au type de serveur auquel vous vous adressé, et
permet de personalisé votre configuration sans avoir à
modifier le programme.

Donc votre message ne doit donc pas être mis dans le fichier trame, mais tapé dans le programme à l'endroit dit, mais
mettez bien dans le fichier de trame la balise #TEXT ou #HTML
(selon format) à l'endroit où devra être placé votre message.

Pour définir ce fichier dans le programme il suffit de mettre
le chemin du fichier trame dans le champ : "Fichier Trame".

Le Zip :
--------
Le zip contient :
- les sources du programme bien evidemment.
- Un fichier mail.txt (important) qui sera la trame SMTP.
- Un fichier lisezmoi.txt qui recapitule tous çà.
- Et deux fichier .reg qui sont des préconfigurations pour les NewB!

PS : Par contre, je ne fourni pas l'exe !

Attention :
-----------

- NB : Comme à l'habitude j'informe à tous que ce programme à été conçu afin de partager des connaissances et non pas d'en abuser pour faire des conneries.
Je dégage toute responsabilité quant à son utilisation.

Source / Exemple :


{  **************************************************************
 .
/!\  Cette source est plus ancienne que le contenu du zip !

                                                                                                                            • }
unit ElgMail; interface uses Windows, Classes, SysUtils, ScktComp, StdCtrls, Math; type EtatConnect = ( helo, mailto, rcptto, data, trame, quit, sckclose ); type TElgAnonyme = class( TClientSocket ) private sEmetteur : string; sDestinataire : string; sLabelEmetteur : string; sLabelDestinataire : string; sSujet : string; sMessage : TStrings; HTMLFormat : boolean; ServeurSMTP : string; Instance : EtatConnect; Terminer : boolean; Debbuger : TCustomMemo; function AutoIP : string; public constructor Create( sServeur : string ); overload; constructor Create( sServeur : string; iPort : Integer ); overload; property AdresseDestinataire : string write sDestinataire; property AdresseEmetteur : string write sEmetteur; property NomDestinataire : string write sLabelDestinataire; property NomEmetteur : string write sLabelEmetteur; property Sujet : string write sSujet; property Mail : TStrings write sMessage; property FormatHTML : boolean write HTMLFormat; property Terminated : boolean read Terminer; procedure ClientRead( Sender: TObject; Socket: TCustomWinSocket ); procedure ClientWrite( Sender: TObject; Socket: TCustomWinSocket ); procedure ClientConnect( Sender: TObject; Socket: TCustomWinSocket ); procedure ClientDisconnect( Sender: TObject; Socket: TCustomWinSocket ); procedure ClientError( Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer ); procedure AssignToDebug( MemoDebug : TCustomMemo ); procedure Envoyer; end; const PORT_SMTP = 25; CRLF = #13#10; CR = #13; LF = #10; implementation constructor TElgAnonyme.Create( sServeur : string ); begin inherited Create(nil); OnConnect := ClientConnect; OnDisconnect := ClientDisconnect; OnError := ClientError; OnRead := ClientRead; OnWrite := ClientWrite; Port := PORT_SMTP; Host := sServeur; ServeurSMTP := sServeur; Instance := helo; Terminer := False; end; constructor TElgAnonyme.Create( sServeur : string; iPort : Integer ); begin inherited Create(nil); Self.OnConnect := ClientConnect; Self.OnDisconnect := ClientDisconnect; Self.OnError := ClientError; Self.OnRead := ClientRead; Port := iPort; Host := sServeur; ServeurSMTP := sServeur; Instance := helo; Terminer := False; end; procedure TElgAnonyme.AssignToDebug( MemoDebug : TCustomMemo ); begin Debbuger := MemoDebug; end; procedure TElgAnonyme.Envoyer(); begin if ( ( Trim( sEmetteur ) = '' ) or ( Trim( sDestinataire ) = '' ) ) then Exit; Open; end; procedure TElgAnonyme.ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Terminer := False; Debbuger.Lines.Add( 'SOCKET > Connection établie' ); end; procedure TElgAnonyme.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Terminer := True; Debbuger.Lines.Add( 'SOCKET > Connection terminée' ); end; procedure TElgAnonyme.ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); var ErrorMessage : String; begin Debbuger.Lines.Add('ERREUR > Connexion impossible'); Close; Terminer := True; end; procedure TElgAnonyme.ClientRead( Sender: TObject; Socket: TCustomWinSocket ); var ServeurReponse : string; MessageLine : Integer; begin ServeurReponse := Socket.ReceiveText; Debbuger.Lines.Add('Serveur > ' + ServeurReponse ); if ( (Copy(ServeurReponse, 1, 1) = '2') or (Copy(ServeurReponse, 1, 1) = '3') ) then begin case ( Instance ) of helo : Socket.SendText('EHLO ' + ServeurSMTP + CRLF); mailto : Socket.SendText('MAIL FROM:<' + sEmetteur + '>' + CRLF); rcptto : Socket.SendText('RCPT TO:<' + sDestinataire + '>' + CRLF); data : Socket.SendText('DATA' + CRLF); trame : begin Socket.SendText('Return-Path: <' + sEmetteur + '>' + LF); Socket.SendText('Delivered-To: online.fr-' + sDestinataire + LF); Socket.SendText('X-Originating-IP: [' + AutoIP + ']' + LF); Socket.SendText('X-Originating-Email: [' + sEmetteur + ']' + LF); Socket.SendText('X-Sender: ' + sEmetteur + LF); Socket.SendText('Subject: ' + sSujet + LF); Socket.SendText('From: "' + sLabelEmetteur + '" ' + '<' + sEmetteur + '>' + LF); Socket.SendText('To: "' + sLabelDestinataire + '" ' + '<' + sDestinataire + '>' + LF); Socket.SendText('Bcc:' + LF); Socket.SendText('Date: ' + DateToStr(Date) + LF); Socket.SendText('Mime-Version: 1.0' + LF); if ( HTMLFormat ) then begin Socket.SendText('Content-Type: text/html; charset=iso-8859-1; format=flowed' + LF); Socket.SendText('<html><body><div>' + LF); for MessageLine := 0 to (sMessage.Count -1) do Socket.SendText( '<font>' + sMessage.Strings[MessageLine] + '</font>' + LF); Socket.SendText('</div></body></html>' + LF); end else begin Socket.SendText('Content-Type: text/plain; charset=ISO-8859-1' + LF ); for MessageLine := 0 to (sMessage.Count -1) do Socket.SendText( sMessage.Strings[MessageLine] + LF); end; Socket.SendText( CRLF + '.' + CRLF ); end; quit : Socket.SendText('QUIT' + CRLF); sckclose: Close; end; Inc(Instance); end else begin Socket.SendText('QUIT' + CRLF); Socket.Close; Terminer := True; end; end; function TElgAnonyme.AutoIP : string; begin Randomize; Result := IntToStr(RandomRange(11, 200)) + '.' + IntToStr(RandomRange(11, 200)) + '.' + IntToStr(RandomRange(11, 200)) + '.' + IntToStr(RandomRange(11, 200)); end; end.

Conclusion :


Le code ci-dessus est une ancienne version, pour avoir le code mis à jour et commenté, telechargez le zip !

Et oubliez pas la note svp !!!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cirec
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32 -
Salut,
j'ai essayer tous les serveurs smtp et aucun ne fonctionne
erreur : Impossible de se connecter à ce serveur où serveur innexistant
Erreur Socket asynchrone 10061
et en suite l'application refuse de se fermer il faut passer par le gestionnaire des tâches et Terminer le processus !!!

voilà c'est domage mais ça marche pas snif ! ;-)

@+
Cirec
elguevel
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3 -
ok merci, je vais regardé çà !!!
cs_costello
Messages postés
136
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
15 février 2006
-
Sans plaisanter aucunement, l'envoi d'e-mail en utilisant une fausse adresse d'expéditeur constitue une infraction pénale comme stipulé dans le code pénal au chapitre 323-1, assimilé à l'intrusion non-autorisée dans un système informatique, passible d'une peine de 2 ans de prison et 30 000 euros d'amende. Je vous déconseille d'utiliser ceci contre des entreprises ou des organismes publics, vous pourriez avoir de sérieux ennuis (ça a déjà fait jurisprudence).

Bien à vous
elguevel
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3 -
C'est pour çà que j'ai stipulé plus haut que je ne fourni pas l'executable, que j'essai ce programme avec ma propre adresse EMAIL, et que c'est un truc de base qui ne comprend pas les type MIME (donc ne permet pas l'envoi de mail trop complet ou l'envoi de pièce jointe etc ... !)

Mais si cette source dérange trop, je peux demander aux admins de l'enlever, celà ne me dérange pas du tout.

PS : pour Cirec > J'ai essayé et là connection fonctionne tu n'as pas du fournir de bonnes infos. Sinon l'envoi ne fonctionne pas alors qu'avec un Telnet (sur ma boite biensur) envoi bien le message, j'ai mal du formatté ma trame SMTP.
elguevel
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3 -
Voila j'ai corrigé l'erreur, j'avais mis un 'MAIL TO' au lieu de 'RCPT TO', ... erreur d'inattention. Et j'ai ajouter un système de visualisation des réponses du serveur.

@+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.