Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPOSANT ASPMAIL PILOTÉ VIA SQL SERVER


Information sur la source

Catégorie :Composants Niveau : Expert Date de création : 05/08/2002 Date de mise à jour : 05/08/2002 14:56:28 Vu : 9 173

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

ASPMAIL est un composant permettant l'envoi de mails...

Il peut être piloté via une page ASP ou peut être de même manipulé via les procédures stockées.

Afin de pouvoir manipuler le composant ASPMAIL, il faut utiliser les procédures stockées OLE Automation afin de créer et utiliser l'objet Mailer.

Voici les marches à suivre ainsi que les commandes à utiliser :
1. CREATION D'UNE INSTANCE DE L'OBJET OLE SMTPsvg.Mailer : sp_OACreate
2. AFFECTATION DES VALEURS AUX PROPRIETES DE L'OBJET SMTPsvg.Mailer :
sp_OASetProperty
3. APPEL A DIFFERENTES METHODES POUR L'ENVOI DE MAIL : sp_OAMethod
4. GESTION DES ERREURS S'IL Y EN A EU : sp_OAGetErrorInfo
5. DESTRUCTION DE L'OBET OLE : sp_OADestroy

Dans mon exemple, je prends en considération une table NEWSLETTER avec en clé unique le champs EMAIL qui contient l'adresse email de chaque utilisateur...
Il s'agira de parcourir toutes les occurences de la table et envoyer un mail à chaque utilisateur...
  
 

Source

  • CREATE PROCEDURE PO_ENVOI_NEWSLETTER
  • AS
  • /* Variable qui contiendra l'email de chaque utilisateur dans chaque ligne du curseur */
  • DECLARE @EMAIL as varchar(255)
  • BEGIN
  • /* Les variables concernant le traitement du mail */
  • @pObj int,
  • @AspMail int,
  • @property int,
  • /* On déclare un curseur afin de récupérer toutes les adresses email */
  • DECLARE CURSMAIL CURSOR GLOBAL FOR SELECT * FROM NEWSLETTER
  • /* On ouvre le curseur */
  • OPEN CURSMAIL
  • /* On récupère une ligne spécifique du curseur */
  • FETCH NEXT FROM CURSMAIL INTO @EMAIL
  • /* Tant que la dernière instruction FETCH sur le curseur a reussie */
  • WHILE(@@FETCH_STATUS = 0)
  • BEGIN
  • /* Envoi du mail */
  • exec @AspMail=sp_OACreate "SMTPsvg.Mailer", @pObj OUT
  • exec @AspMail=sp_OASetProperty @pObj, "RemoteHost","adresse de l'host"
  • exec @AspMail=sp_OASetProperty @pObj, "FromName","Nom de l'emetteur"
  • exec @AspMail=sp_OASetProperty @pObj, "FromAddress","Email de l'emetteur"
  • exec @AspMail=sp_OASetProperty @pObj, "SubJect", "Commande de mails via SQL-SERVER"
  • exec @AspMail=sp_OASetProperty @pObj, "ContentType","text/html"
  • exec @AspMail=sp_OASetProperty @pObj, "BodyText","Corps de votre message"
  • exec @AspMail=sp_OAMethod @pObj, "AddRecipient", @property OUT, @EMAIL, @EMAIL
  • exec @AspMail=sp_OAMethod @pObj, "SendMail", @property OUT
  • FETCH NEXT FROM CURSMAIL INTO @EMAIL
  • END
  • CLOSE CURSMAIL
  • DEALLOCATE CURSMAIL
  • END
  • ************************
  • Côté ASP :
  • ************************
  • Set Conn = Server.CreateObject("ADODB.Connection")
  • Conn.Open "Nom de votre DSN"
  • str = "EXEC PO_ENVOI_NEWSLETTER"
  • set rst = Conn.Execute(str)
CREATE PROCEDURE PO_ENVOI_NEWSLETTER
	AS
    	/* Variable qui contiendra l'email de chaque utilisateur dans chaque ligne du curseur */
         DECLARE @EMAIL as varchar(255)

	BEGIN
		/* Les variables concernant le traitement du mail */
		@pObj		int,
		@AspMail	int,
		@property 	int,

		/* On déclare un curseur afin de récupérer toutes les adresses email */
		DECLARE CURSMAIL CURSOR GLOBAL FOR SELECT * FROM NEWSLETTER

		/* On ouvre le curseur */
		OPEN CURSMAIL
	
		/* On récupère une ligne spécifique du curseur */
		FETCH NEXT FROM CURSMAIL INTO @EMAIL

		/* Tant que la dernière instruction FETCH  sur le curseur a reussie */
		WHILE(@@FETCH_STATUS = 0)
			BEGIN
				/* Envoi du mail */
	            exec @AspMail=sp_OACreate "SMTPsvg.Mailer", @pObj OUT
	            exec @AspMail=sp_OASetProperty @pObj, "RemoteHost","adresse de l'host"
	            exec @AspMail=sp_OASetProperty @pObj, "FromName","Nom de  l'emetteur"
	            exec @AspMail=sp_OASetProperty @pObj, "FromAddress","Email de l'emetteur"
	            exec @AspMail=sp_OASetProperty @pObj, "SubJect", "Commande de mails via SQL-SERVER"
	            exec @AspMail=sp_OASetProperty @pObj, "ContentType","text/html"
	            exec @AspMail=sp_OASetProperty @pObj, "BodyText","Corps de votre message"
	            exec @AspMail=sp_OAMethod @pObj, "AddRecipient", @property OUT, @EMAIL, @EMAIL
	            exec @AspMail=sp_OAMethod @pObj, "SendMail", @property OUT
		FETCH NEXT FROM CURSMAIL INTO @EMAIL
	END
              CLOSE CURSMAIL
              DEALLOCATE CURSMAIL
END


************************
Côté ASP :
************************

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Nom de votre DSN"
	
str = "EXEC PO_ENVOI_NEWSLETTER"
set rst = Conn.Execute(str)   

Conclusion

En espérant vous aider, dans tous les cas bon courage et bonne programmation...  
 

Commentaires et avis

signaler à un administrateur
Commentaire de Frank339 le 13/03/2005 18:49:54

personnellement, j'aurai pensé voir un zip, ca aurait été mieux pour la lecture à ceux qui ont des problèmes à l'insertion de ta source...

meilleures salutations.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.