begin process at 2012 05 27 01:44:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > TENIR VOS VISITEURS INFORMÉS DE LA DISPONIBILITÉ D'UNE PAGE PAR MAIL.

TENIR VOS VISITEURS INFORMÉS DE LA DISPONIBILITÉ D'UNE PAGE PAR MAIL.


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :alerte, visiteur, mail, smtp, 404 Niveau :Initié Date de création :23/01/2005 Date de mise à jour :23/01/2005 14:19:20 Vu / téléchargé :7 271 / 247

Auteur : li9

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Lorsque vous créez un site il est possible qu'un utilisateur tente d'accéder à une page ( dans le cas de mon exemple un User Control (.ascx) ) qui n'est pas encore disponible.
J'ai voulu alors créer un code qui puisse informer l'utilisateur que cette page n'existe pas ( fameuse Erreur 404 ) et lui proposer de l'informer par mail de la  mise en service de cette page.

Pour l exemple je vais utiliser un User Control , à vous de le modifier si vous voulez qu'il marche avec un frame ou juste une page normale.

Lorsque la page principale tente de charger la page demandée ( dans le querystring par ex. )
elle vérifie que le control ascx existe bien ,
1 ) S'il n'existe pas on redirige l'utilisateur vers une erreur 404 depuis laquelle il pourra enregistrer son email.
2 ) Si le control existe , une fonction va alors vérifier le nombre de fois que la page a été visité ,
si le nombre de visites est null ou egal à 0 , alors on envoie un mail à tout les visiteurs qui l ont demandé.

J'espere avoir été clair. , si vous n'avez rien compris essayez le zip.
Le code a été testé , il marche sur mon serveur personnel sous server 2003.
Le problème que vous pouvez avoir a mon avis viendrait du SmtpMail.Send( "myMail" );

Bon courage !

lunatik

Source

  • ' DANS LE FICHIER DEFAULT.ASPX
  • namespaces requis :
  • System.Text
  • System.IO
  • System.Web.Mail
  • Code :
  • void Page_Load(object sender, EventArgs e)
  • {
  • if(Request.QueryString["page"]!=null)
  • {
  • string DocId = Request.QueryString["page"];
  • if( File.Exists( Server.MapPath("") + "\\" + DocId + ".ascx" ) )
  • {
  • 'Check if file exists
  • 'on ajoute 1 au compteur.
  • 'si le compteur est vide ou egal a 0
  • 'on envoit un mail aux utilisateurs pour
  • 'les informer de son ajout.
  • countPage(DocId);
  • mainContent.Controls.Add(Page.LoadControl( DocId + ".ascx" ) );
  • }
  • else
  • {
  • mainContent.Controls.Add(Page.LoadControl( "error404.ascx" ) );
  • }
  • }
  • }
  • private void countPage( string usercontrol )
  • {
  • 'on verifie l existence du repertoire sinon on le cree
  • if( !Directory.Exists( Server.MapPath("") + "\\info_count\\" ) )
  • {
  • Directory.CreateDirectory( Server.MapPath("") + "\\info_count\\" );
  • }
  • string countFile = Server.MapPath("") + "\\info_count\\" + usercontrol + ".txt";
  • if( !File.Exists( countFile ) )
  • {
  • 'si le fichier counter n existe pas, on le cree et on envoit un mail
  • StreamWriter writeCount = new StreamWriter( countFile , false );
  • writeCount.Write( "1" );
  • writeCount.Close();
  • sendMail( usercontrol );
  • }
  • else
  • {
  • 'on stock le nombre de visite dans un entier.
  • StreamReader readCount = new StreamReader( countFile );
  • int count = 0;
  • try
  • {
  • count = int.Parse( readCount.ReadToEnd() );
  • }
  • catch
  • {
  • count = 0;
  • }
  • readCount.Close();
  • if( count == 0 )
  • {
  • 'si le nombre de visite est egal a 0 on envoit un mail
  • sendMail( usercontrol );
  • }
  • 'on ajoute 1 aux nombre de visites
  • count+=1;
  • 'on sauvegarde...
  • StreamWriter writeCount = new StreamWriter( countFile , false );
  • writeCount.Write( count.ToString() );
  • writeCount.Close();
  • }
  • }
  • private void sendMail( string usercontrol )
  • {
  • 'on verifie l existence du repertoire sinon on le cree
  • if( !Directory.Exists( Server.MapPath("") + "\\info_mail\\" ) )
  • {
  • Directory.CreateDirectory( Server.MapPath("") + "\\info_mail\\" );
  • }
  • 'on stock le chemin dans un string
  • string mailpath = Server.MapPath("") + "\\info_mail\\" + usercontrol + ".txt";
  • if( File.Exists( mailpath ) )
  • {
  • 'on enregistre les mails dans un textbox pour facilement separer chaque ligne.
  • string mailList = "";;
  • StreamReader readmails = new StreamReader( mailpath );
  • mailList = readmails.ReadToEnd();
  • readmails.Close();
  • 'on sauvegarde les mails dans un string array (on decoupe a partir de \n )
  • string sep = "\n";
  • string[] newList = mailList.Split( sep.ToCharArray() );
  • 'et maintenant on envoit un mail a chaque personne dans la liste.
  • for( int i = 0 ; i < newList.Length ; i++ )
  • {
  • if( newList[i].Length >= 2 )
  • {
  • MailMessage email = new MailMessage();
  • email.From = "********@domain.com"; // <-- mettez votre email ici
  • email.To = newList[i];
  • email.Subject = "Page disponible !";
  • email.Body = "la page \"machin\" est disponible sur le site \"truc.com\"";
  • SmtpMail.SmtpServer = "smtp.*domain*.com" ; // <-- ici votre server smtp
  • SmtpMail.Send( email );
  • }
  • }
  • }
  • }
  • 'DANS LE FICHIER DE L ERREUR :
  • namespace requis :
  • System.IO
  • code :
  • 'evenement lors de la creation de la page
  • void Page_Load(object sender, EventArgs e)
  • {
  • 'assignement du nom du document a sauvegarder dans un textbox
  • 'optionel !!
  • docid.Text = Request.QueryString["page"];
  • }
  • 'sauvegarde du mail dans un document
  • private void saveMail(object sender , EventArgs e)
  • {
  • 'verification du contenu du textbox "mail"
  • if( !mail.Text.StartsWith(" ") || mail.Text!= "" )
  • {
  • 'on verifie que son email est au bon format
  • if( mail.Text.LastIndexOf("@") >= 1 )
  • {
  • 'on verifie l existence du repertoire sinon on le cree
  • if( !Directory.Exists( Server.MapPath("") + "\\info_mail\\" ) )
  • {
  • Directory.CreateDirectory( Server.MapPath("") + "\\info_mail\\" );
  • }
  • string docname = Request.QueryString["page"];
  • string filePath = Server.MapPath("") + "\\info_mail\\" + docname + ".txt";
  • if( !File.Exists( filePath ) )
  • {
  • 'si le fichier qui contient la liste de mail
  • 'n'existe pas , on le cree.
  • StreamWriter writeFile = new StreamWriter( filePath , false );
  • writeFile.WriteLine( mail.Text );
  • writeFile.Close();
  • }
  • else
  • {
  • 'Si le fichier existe on ne fait que sauvegarder le mail.
  • StreamWriter writeFile = new StreamWriter( filePath , true );
  • writeFile.WriteLine( mail.Text );
  • writeFile.Close();
  • }
  • 'une fois enregistre on previent l'utlisateur.
  • sub_info.Text = "Merci.<br />Vous serez inform&eacute; d&egrave;s que le document sera ajout&eacute;";
  • }
  • else
  • sub_info.Text = "Veuillez v&eacute;rifier votre email.";
  • }
  • else
  • sub_info.Text = "Veuillez entrer votre email.";
  • }
' DANS LE FICHIER DEFAULT.ASPX
namespaces requis : 
           System.Text
           System.IO
           System.Web.Mail

Code :

void Page_Load(object sender, EventArgs e)
	{
		if(Request.QueryString["page"]!=null)
		{
			string DocId	= Request.QueryString["page"];
			if( File.Exists( Server.MapPath("") + "\\" + DocId + ".ascx" ) )
			{
				'Check if file exists
				'on ajoute 1 au compteur.
				'si le compteur est vide ou egal a 0
				'on envoit un mail aux utilisateurs pour
				'les informer de son ajout.
				countPage(DocId);
				mainContent.Controls.Add(Page.LoadControl( DocId + ".ascx" ) );
			}
			else
			{
				mainContent.Controls.Add(Page.LoadControl( "error404.ascx" ) );
			}			
		}
	}
	
	private void countPage( string usercontrol )
	{
		'on verifie l existence du repertoire sinon on le cree
		if( !Directory.Exists( Server.MapPath("") + "\\info_count\\" ) )
		{
			Directory.CreateDirectory( Server.MapPath("") + "\\info_count\\" );
		}
			
		string countFile = Server.MapPath("") + "\\info_count\\" + usercontrol + ".txt";
		if( !File.Exists( countFile ) )
		{
			'si le fichier counter n existe pas, on le cree et on envoit un mail
			StreamWriter writeCount = new StreamWriter( countFile , false );
			writeCount.Write( "1" );
			writeCount.Close();
			
			sendMail( usercontrol );
		}
		else
		{
		
		
			'on stock le nombre de visite dans un entier.
			StreamReader readCount = new StreamReader( countFile );
			int count = 0;
			try
			{
				count = int.Parse( readCount.ReadToEnd() );
			}
			catch
			{
				count = 0;
			}
			
			readCount.Close();
			
			if( count == 0 )
			{
				'si le nombre de visite est egal a 0  on envoit un mail
				sendMail( usercontrol );
			}
			
			'on ajoute 1 aux nombre de visites
			count+=1;
			'on sauvegarde...
			
			StreamWriter writeCount = new StreamWriter( countFile , false );
			writeCount.Write( count.ToString() );
			writeCount.Close();
		}
	}
	
	private void sendMail( string usercontrol )
	{
		'on verifie l existence du repertoire sinon on le cree
		if( !Directory.Exists( Server.MapPath("") + "\\info_mail\\" ) )
		{
			Directory.CreateDirectory( Server.MapPath("") + "\\info_mail\\" );
		}
	
		'on stock le chemin dans un string
		string mailpath = Server.MapPath("") + "\\info_mail\\" + usercontrol + ".txt";
		if( File.Exists( mailpath ) )
		{		
			'on enregistre les mails dans un textbox pour facilement separer chaque ligne.
			string mailList = "";;
			StreamReader readmails = new StreamReader( mailpath );
			mailList = readmails.ReadToEnd();
			readmails.Close();
			
			'on sauvegarde les mails dans un string array (on decoupe a partir de \n )
			string sep = "\n";
			string[] newList = mailList.Split( sep.ToCharArray() );
						
			'et maintenant on envoit un mail a chaque personne dans la liste.
			for( int i = 0 ; i < newList.Length ; i++ )
			{
				if( newList[i].Length >= 2 )
				{
					MailMessage email	= new MailMessage();
					email.From			= "********@domain.com"; // <-- mettez votre email ici
					email.To			= newList[i];
					email.Subject		= "Page disponible !";
					email.Body			= "la page \"machin\" est disponible sur le site \"truc.com\"";
					SmtpMail.SmtpServer = "smtp.*domain*.com" ;  // <-- ici votre server smtp 
					
					SmtpMail.Send( email );
				}
			}			
		}
	}


'DANS LE FICHIER DE L ERREUR :
          namespace requis :
                       System.IO

           code :

	'evenement lors de la creation de la page
		void Page_Load(object sender, EventArgs e)
		{
			'assignement du nom du document a sauvegarder dans un textbox
			'optionel !!
			docid.Text = Request.QueryString["page"];
		}
		
		'sauvegarde du mail dans un document
		private void saveMail(object sender , EventArgs e)
		{
			'verification du contenu du textbox "mail"
			if( !mail.Text.StartsWith(" ") || mail.Text!= "" )
			{ 
				'on verifie que son email est au bon format
				if( mail.Text.LastIndexOf("@") >= 1 )
				{			
				
					'on verifie l existence du repertoire sinon on le cree
					if( !Directory.Exists( Server.MapPath("") + "\\info_mail\\" ) )
					{
						Directory.CreateDirectory( Server.MapPath("") + "\\info_mail\\" );
					}	
					
					string docname	= Request.QueryString["page"];
					string filePath	= Server.MapPath("") + "\\info_mail\\" + docname + ".txt";
					if( !File.Exists( filePath ) )
					{
						'si le fichier qui contient la liste de mail
						'n'existe pas , on le cree.
						StreamWriter writeFile = new StreamWriter( filePath , false );
						writeFile.WriteLine( mail.Text );
						writeFile.Close();
					}
					else
					{
						'Si le fichier existe on ne fait que sauvegarder le mail.
						StreamWriter writeFile = new StreamWriter( filePath , true );
						writeFile.WriteLine( mail.Text );
						writeFile.Close();
					}
					'une fois enregistre on previent l'utlisateur.
					sub_info.Text = "Merci.<br />Vous serez inform&eacute; d&egrave;s que le document sera ajout&eacute;";
				}
				else
					sub_info.Text = "Veuillez v&eacute;rifier votre email.";
			}
			else
				sub_info.Text = "Veuillez entrer votre email.";
		}	


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

23 janvier 2005 14:02:31 :
J'ai rajouté le code que j avais oublié hehe ^^"
23 janvier 2005 14:19:20 :
Avis au webmaster du site : y aurait moyen d inclure la colorisation auto des commentaires pour le C# ?? xD

 Sources du même auteur

Source .NET (Dotnet) GARDER LES SAUTS À LA LIGNE DE TEXTES EXTERIEURS
Source .NET (Dotnet) IMAGE : GARDER LA RESOLUTION SI LA TAILLE NE DEPASSE PAS LE ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) XREPORT : REPORTING DE DATASET EN XML, PDF, EXCEL ET ENVOI P... par leptidev
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP par fabrice69
ENVOIE MAIL EN SMTP DEPUIS WINDOWS 2003 / ASP SANS COMPOSANT par lord mathius
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI D'UN MAIL EN ASP.NET (GARANTIE 100% ET TRÈS SIMPLE) par CBphoenix
Source .NET (Dotnet) ENVOYER UN MAIL EN ASP.NET par everest

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pb SMTP [ par benj71 ] Voila mon pb:dans mon site, j'envoie des mails en auto lors de l'inscription d'une nouvelle personne.Ma fonction d'envoie de mail marche bien vu que j envoi de mail via cdonts et smtp...mail se retrouve dans badmail [ par VB ] qui connais un site sur la config smtp de iis car moi j'ai des messages qui sont dans le répetoire badmail quand j'envoi un mail ...???sinon ce serais AU SECOURS : SMTP ASPSMARTMAIL !!!!! [ par lawraC ] Bonjour,j'utilise aspSmartMail pour une appli web interne à ma société. Le site web est placé sur IIS , windows 2000.Lorsque j'essaie d'envoyer le mai Trouver un serveur smtp qui ceuille de moi... [ par scoubigee ] Voici mon problem : jmail.SMTPMail error '8000ffff' The message was envoi un mail via ASP.NET [ par franckydeluka ] Bonjour tous ,J'aimerais pouvoir envoyer un mail depuis mon appli ASP.NETVoilà j'aimerais savoir comment m'y prendre :Depuis l'entreprise j'ai à dispo serveur smtp et envois de mails [ par danyclassique ] Bonjour a tous ,je suis en train  d essyer de creer un envoi de mails qui n a pas l air tres complique a faire ,j insere mon serveur smtp qui m a ete protèction de l'adresse mail d'un visiteur [ par taillecrayon ] Bonjour,Si l'on range les adresses mail des utilisateurs dans une base de donnée sans autre précaution, seront t'elles lues par des robots ou autre?ta Serveur SMTP SSL [ par esmjpe ] Je voudrais envoyer un mail par le biais d'un serveur sécurisé SSL.Il me faut donc deux choses:- l'envoi d'un mail à un serveur autre que le SMTP du s envoi d'un mail [ par mawsine ] salut , SVP je suis débutante en asp; je travaille avec ASP.net with c# : je veux que une fois on crée un utilisateur dans une base de données on lui S'envoyer un mail [ par Byrong ] Bonjour Comment puis je faire pour que les gens sur le site puisse m'envoyer un mail? Si j'envoie le mail a partir du pc connecter sur le même route


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,870 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales