Envoi de mail anonyme (sans composant, ni dll)

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

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.