Fig.1 Code HTML du formulaire de commentaires
Vous pouvez voir à quoi ressemble finalement le formulaire de commentaires présenté ici dans la capture d'écran suivante.
Ainsi formulaire requis créé. Et maintenant, vous pouvez passer aux questions de traitement et d'envoi de données sous forme d'e-mail.
Installation de la bibliothèque PHPMailer
Comme indiqué précédemment, pour envoyer du courrier, nous utiliserons la bibliothèque PHPMailer, ce qui simplifiera grandement l'envoi de courrier électronique via Protocole SMTP avec autorisation sur un service de messagerie tiers.
Pour l'installer, vous devez télécharger fichiers nécessaires. Cela peut être fait à partir du service Web GitHub à l'aide de Composer (un gestionnaire de dépendances de packages pour PHP). Ou téléchargez simplement les fichiers nécessaires de la manière habituelle.
capture d'écran 73
Vous trouverez ci-dessous la page du service Web GitHub, où est marqué le lien vers le téléchargement régulier de la bibliothèque PHPMailer.
En plus, dernière version 6.0.7, qui a été enregistré au moment de la rédaction de cet article, peut être téléchargé à partir des documents joints.
Dans tous les cas, le fichier d'archive résultant doit être décompressé, après quoi le dossier PHPMailer-master extrait avec tout son contenu doit être placé à la racine du site. En même temps, par souci de simplicité, vous pouvez le renommer PHPMailer. Ci-dessous se trouve le contenu du dossier PHPMailer placé dans le répertoire racine du site.
Nous avons donc installé la bibliothèque PHPMailer. Après quoi, nous pouvons commencer à créer un script avec lequel nous enverrons des messages électroniques depuis notre site Web.
Nous créons un script pour envoyer du courrier via SMTP
Pour composer le script, il suffit d'utiliser les recommandations d'utilisation de PHPMailer données sur la page GitHub, que nous avons précédemment utilisées pour télécharger la bibliothèque.
Ils indiquent notamment qu'au début du script, il est nécessaire d'importer les classes PHPMailer dans l'espace de noms global. Et des lignes spécifiques de code correspondant sont données. Il existe également des exemples d'utilisation des propriétés et des méthodes de PHPMailer, notamment pour la possibilité d'envoyer du courrier via SMTP.
Mais si cela ne suffit pas, vous pouvez également utiliser la documentation, qui contient une description de toutes les propriétés et méthodes de cette bibliothèque.
capture d'écran 74
Vous trouverez ci-dessous le code de script pour envoyer du courrier à partir du formulaire de commentaires via SMTP avec autorisation. Où toutes les lignes liées à PHPMailer sont données avec explication et mises en évidence sur un fond clair.
Le reste de la partie, y compris les fragments liés à la réception et au traitement des données du formulaire, que nous devions auparavant utiliser dans d'autres processeurs, est indiqué par un fond sombre. Ils ont été abordés plus en détail plus tôt dans un article consacré spécifiquement aux problèmes d'obtention et de vérification des données d'un formulaire en PHP. Où nous avons également parlé de la fonction utilisateur universelle pour valider et traiter les données du formulaire check_symbol().
Nous placerons ce script dans le même fichier kontakty.php dans lequel nous avons précédemment créé le formulaire de commentaires.
//----Script pour envoyer du courrier via SMTP en utilisant PHPMailer----
//Importez les classes PHPMailer dans l'espace de noms global. Ils doivent être en haut du script, pas à l'intérieur de la fonction
utiliser PHPMailer\PHPMailer\PHPMailer ;
utiliser PHPMailer\PHPMailer\Exception ;
si
(!vide($_POST["bouton-contact" ])) (
$name = $_POST["nom-contact" ];
$name = check_symbol ($name, "Name" , "1" , "/^+\z/iu" );
$email = $_POST["contact-email" ];
$email = check_symbol ($email, "E-mail" , "1" , "/^+@(+\.)+(2,6)\z/i");
$sujet = $_POST["contact-sujet" ];
$subject = check_symbol ($subject, "Message Subject" , "1" , "0" );
$commentaire = $_POST["contact-commentaire" ];
$commentaire = check_symbol ($commentaire, "Texte du message", "1"
, "0"
);
si
(!vide($GLOBALS["alerte" ])) (
$alerte = "Les données du formulaire n'ont pas été envoyées. Les erreurs suivantes ont été trouvées :\n".$alerte;
inclure"alerte.php" ;
autre
{
//Connexion de la bibliothèque
exiger"PHPMailer/src/PHPMailer.php" ;
exiger"PHPMailer/src/Exception.php" ;
exiger"PHPMailer/src/SMTP.php" ;
$mail = nouveau PHPMailer(); //Initialisation de la classe
$de = " [email protégé]"
; //Adresse email à partir de laquelle la lettre est envoyée
$à = " [email protégé]"
; //Adresse du destinataire
$mail -> estSMTP(); //Utiliser le protocole SMTP
$mail -> Hôte = "smtp.yandex.ru" ; //Adresse du serveur de messagerie
$mail -> SMTPAuth = vrai
; //Activer le mode d'autorisation
$mail -> Nom d'utilisateur = " [email protégé]"
; //Connexion à partir d'un domaine de messagerie connecté à un service de messagerie tiers (dans ce cas, Yandex.Mail)
$mail -> Mot de passe = "27MrDon89" ; //Mot de passe pour la messagerie du domaine
$mail -> SMTPSecure = "ssl" ; //Protocole de chiffrement
$mail -> Port = "465" ; //Port du serveur SMTP
$mail -> CharSet = "UTF-8" ; //Codage
$mail -> setFrom ($from, "Administrateur" ); //Adresse et nom de l'expéditeur
$mail -> addAddress ($to, "Administrateur" ); //Adresse et nom du destinataire
$mail -> estHTML ( vrai
); //Définir le format de l'e-mail sur HTML
$mail -> Sujet = "Formulaire de commentaires soumis"; //Objet de l'e-mail (titre)
$mail -> Corps = "
Nom de l'expéditeur: $nom
L'adresse de l'expéditeur: $email
Objet du message: $sujet
Contenu du message: $commentaire
"
; //Contenu du message
$mail -> AltBody = "Texte de lettre alternatif"; //E-mail alternatif si le client de messagerie ne prend pas en charge le format HTML
$mail -> SMTPDebug = 0 ; //Activer le débogage SMTP : 0 - désactivé (pour une utilisation normale), 1 = messages client, 2 - messages client et serveur
si($mail -> envoyer()) (
$alerte = "Message envoyé"; //Affiche un message dans la boîte de dialogue du navigateur concernant l'envoi réussi de la lettre
autre
{
$alerte = "Erreur, l'e-mail ne peut pas être envoyé : ".$mail -> ErreurInfo ; // Afficher un message d'erreur
inclure"alerte.php" ;
Fig.5 Script pour l'envoi d'e-mails via SMTP avec autorisation
Comme vous pouvez le constater, toutes les lignes directement liées à l'envoi d'un e-mail, dans lesquelles sont précisées les méthodes et propriétés nécessaires, sont accompagnées de commentaires. Cela n'a donc aucun sens de se répéter, mais nous ne pouvons nous attarder que sur certains d'entre eux, qui nécessitent en effet des explications complémentaires, à savoir :
1. Étant donné que la lettre est envoyée depuis un service de messagerie tiers, les paramètres correspondant au serveur SMTP spécifique sont appliqués ici. Dans ce cas, pour le cas d'utilisation du serveur Yandex.Mail, les valeurs de propriété suivantes sont appliquées :
- Propriété Hôte(pos.28) - Adresse du serveur de messagerie avec la valeur smtp.yandex.ru ;
- Propriété SMTPSécurisé
- Propriété Port
Ces valeurs de propriété ont été extraites de la page Yandex.Help présentée dans la capture d'écran suivante.
Mais ces informations peuvent également être obtenues à partir d’autres ressources. Pour ce faire, saisissez simplement la requête appropriée dans un moteur de recherche, par exemple : « Serveur smtp Yandex ». Où trouver un grand nombre de références sur cette question.
De la même manière, les valeurs des paramètres peuvent être obtenues à partir d'autres serveurs SMTP. Vous trouverez ci-dessous une capture d'écran de la page d'aide Mail.ru, qui affiche les paramètres du serveur SMTP du service de messagerie Mail.ru.
Et ainsi, dans le cas de l'utilisation de Mail.ru comme serveur SMTP tiers, les valeurs suivantes des propriétés de la classe PHPMailer doivent être appliquées :
- Propriété Hôte(pos.28) - Adresse du serveur de messagerie (smtp.mail.ru) ;
- Propriété SMTPSécurisé(pos.32) - Protocole de cryptage (ssl) ;
- Propriété Port(pos. 33) - Port du serveur SMTP (465).
Une approche similaire devrait être appliquée à d’autres services de messagerie.
2. En propriété Nom d'utilisateur(pos. 30) il est nécessaire d'indiquer l'adresse complète de la boîte aux lettres du domaine. Dans ce cas, " [email protégé]".
Cependant, si vous utilisez un compte autre qu'un compte de messagerie de domaine pour envoyer des lettres, mais une adresse directement liée au service de messagerie, par exemple " [email protégé]", alors le login ne doit être que la partie de l'adresse jusqu'au signe "@". Dans ce cas, le login aurait la valeur "feedback".
3. PHPMailer fournit une propriété SMTPDébogage(pos. 50), qui permet d'afficher différents niveaux d'erreurs sur l'écran du navigateur. Cette fonctionnalité simplifie grandement la recherche de problèmes lors du débogage d'un script.
Généralement, en mode normal, avec la valeur définie sur 0, la sortie d'informations détaillées sur l'erreur est désactivée. Mais si des problèmes surviennent lors de l'envoi du courrier ou lors du débogage, il est possible d'utiliser d'autres valeurs pour afficher des informations plus significatives sur l'erreur.
Afin de voir à quoi cela ressemble en pratique, introduisons temporairement une erreur dans les paramètres. Par exemple, dans le mot de passe de messagerie du domaine (propriété Mot de passe, pos.31). Et aussi pour afficher des informations détaillées sur l'erreur, définies temporairement dans la propriété SMTPDébogage(pos.50) valeur 1. Après, lorsque tout sera débogué et vérifié, nous désactiverons le mode de débogage SMTP, en remplaçant 1 par 0.
Dans la dernière partie du script, après avoir spécifié toutes les propriétés et méthodes nécessaires, la méthode est utilisée pour envoyer la lettre envoyer()) (pos. 51). Et si la lettre est envoyée, et la méthode envoyer() pour objet $mail renvoie vrai, puis dans la boîte de dialogue du navigateur via la variable $alerte Un message concernant l'envoi réussi du courrier s'affichera (pos. 52).
Si, pour une raison quelconque, le courrier n'a pas pu être envoyé et, par conséquent, la méthode n'a pas pu renvoyer vrai, alors cet état sera accompagné d'un message d'erreur correspondant (pos. 55).
Vérification de l'envoi d'e-mails
Après avoir créé un script pour envoyer du courrier, nous devons naturellement examiner le résultat de notre « créativité ». Avons-nous tout pris en compte ici et n’avons-nous commis aucune erreur ?
Pour ce faire, essayons, comme prévu, d'envoyer un message de l'utilisateur à l'administrateur du site à partir du formulaire de commentaires. Vous trouverez ci-dessous une capture d'écran du formulaire de commentaires avec les champs remplis avant son envoi.
Et voici le résultat de la soumission du formulaire.
Où, d'après le message dans la boîte de dialogue du navigateur, il ressort clairement que la lettre ne peut pas être envoyée en raison d'un problème avec la connexion SMTP.
Mais puisque désormais la propriété SMTPDébogage(pos. 50) reçoit la valeur 1, nous pouvons alors voir des informations détaillées sur l'erreur qui s'est produite et découvrir la raison de son apparition.
La capture d'écran suivante montre que lors de la tentative de connexion, une erreur d'authentification a été détectée, c'est-à-dire l'utilisation d'un identifiant ou d'un mot de passe incorrect.
Après avoir éliminé l'incompatibilité du mot de passe (auparavant, un mot de passe incorrect était utilisé pour pouvoir vérifier la sortie d'informations supplémentaires sur l'erreur), nous essaierons d'envoyer à nouveau le courrier.
Cette fois, tout a semblé bien se passer et nous avons reçu un message indiquant que le courrier avait été envoyé avec succès. Apparemment, à l'exception de l'erreur temporaire délibérément saisie dans le mot de passe de messagerie du domaine, nous n'avons commis aucune autre erreur.
Mais afin de nous assurer que la lettre a bien été remise au destinataire, entrons le courrier avec l'adresse [email protégé] et regardez le résultat.
Comme vous pouvez le voir, la lettre de l'adresse [email protégé], à partir duquel nous avons envoyé un e-mail portant le nom "Feedback" parvenu avec succès à l'administrateur du site. Dans le même temps, le corps de la lettre contient tout le contenu que nous avons généré dans le script à partir des données reçues du formulaire de commentaires, à savoir :
- Nom de l'expéditeur : Nikolaï ;
- L'adresse de l'expéditeur: [email protégé];
- Objet du message : Vérification de l'envoi du courrier ;
- Contenu du message : Message de test.
Désormais, après avoir vérifié avec succès l'envoi du courrier, vous pouvez désactiver le mode de débogage SMTP en attribuant la propriété SMTPDébogage(pos.50) valeur 0.
Ainsi, nous avons réalisé la tâche de créer un outil d'envoi de courrier via SMTP avec autorisation utilisant un serveur de messagerie tiers.
Par exemple, dans le prochain article, nous verrons comment envoyer des e-mails de confirmation pour récupérer les données du compte utilisateur enregistré.
Fichiers sources du site
Les fichiers sources du site avec les mises à jour effectuées dans cet article peuvent être téléchargés à partir des documents supplémentaires ci-joints :
- fichiers du répertoire www
- Tables de base de données MySQL
L'envoi de mail via SMTP depuis un serveur local permet de tester l'envoi de messages depuis un site situé sur une machine locale, ou plus simplement, un serveur local. Pour ce faire, vous pouvez utiliser n'importe quel service de messagerie Yandex, Google ou mail.ru.
Tout d'abord, SMTP (Simple Mail Transfer Protocol) est un protocole réseau largement utilisé conçu pour transmettre des e-mails sur les réseaux TCP/IP. Et tous les services de messagerie populaires disposent de tels protocoles.
Avec l'avènement des serveurs locaux, il n'était plus nécessaire de choisir un fournisseur d'hébergement pour vérifier les performances de scripts individuels ou de systèmes cms, et encore moins de payer pour cela. Il est beaucoup plus facile de tout tester sur un ordinateur, et vous pouvez ensuite montrer à tout le monde ce que vous avez « fait ».
Beaucoup de ces serveurs disposent déjà d'un logiciel intégré et des fonctionnalités nécessaires pour travailler avec le courrier, il vous suffit de le configurer correctement.
Pour vérifier la fonctionnalité d'un tel courrier, le strict minimum est requis :
- Vous pouvez utiliser Openserver comme serveur local.
- Et un script simple, dont le modèle se trouve juste en dessous.
- Vous pouvez utiliser n'importe quel serveur de messagerie.
Envoi de courrier php via la configuration du script SMTP
Un modèle de script simple qui peut être copié ci-dessous ou téléchargé à partir de centaines de sites similaires doit être modifié.
Tout d'abord, vous devez modifier certaines valeurs dans le modèle de script.
à
— changement de l'adresse postale à laquelle le message électronique sera envoyé.
sujet
- sujet de la lettre
message
— le message lui-même, ou le corps de la lettre.
Exemple de mon script :
Vous pouvez bien sûr étendre un peu la fonctionnalité et faire en sorte que le script affiche un message concernant l'envoi de courrier. Bien qu'en fait c'est le serveur SMTP qui effectue l'envoi, et le script génère uniquement le message.
Par exemple, vous pouvez écrire ceci :
Toutes les valeurs substituées doivent être entre guillemets, sinon le script générera une erreur. Après cela, vous pouvez enregistrer le script dans le dossier du serveur local.
Par exemple: domaines/envoyer/index.php et commencez à configurer l'envoi de courrier via SMTP opensrerver.
Le courrier arrivera à n'importe quelle adresse qui sera spécifiée dans le script au lieu de la valeur 'à'
, mais ce courrier sera traité et envoyé exactement par le SMTP qui sera spécifié dans les paramètres d'openserver.
- Démarrage du serveur
- Ouvrez le module openserver avec les paramètres dans le menu « mail »
- Nous remplissons tous les champs comme indiqué sur l'image, tout en remplaçant le nom d'utilisateur, l'e-mail de l'expéditeur et le mot de passe d'une vraie boîte aux lettres Yandex.
Nous enregistrons les paramètres et après le redémarrage du serveur, vous pouvez accéder au script lui-même. Depuis le dossier « Mes sites », ouvrez le dossier « envoyer » dans lequel se trouve le script index.php précédemment enregistré.
Dès l'accès à ce script, des informations apparaîtront dans une nouvelle fenêtre de navigateur indiquant que le script est terminé.
Après cela, vous devez vérifier votre boîte aux lettres, dont l'adresse a été indiquée dans le script, pour voir si la lettre est arrivée.
Si ce n'est pas le cas, cela signifie que quelque chose n'est pas configuré correctement ou que la lettre s'est retrouvée dans le dossier spam.
Tous les autres paramètres semblent similaires, mais juste au cas où, des informations supplémentaires ne feraient pas de mal.
Afin de configurer l'envoi de courrier via SMTP mail ru, il vous suffit de remplacer les paramètres Yandex par les paramètres mail ru.
Et pour ne pas reconstruire le serveur local à chaque fois, il est préférable de configurer différents profils openserver. Comment procéder est montré dans le didacticiel vidéo.
Dans ce cas, il suffira simplement de charger le profil et tous les paramètres qui ont été précisés pour ce profil seront disponibles après redémarrage du serveur. C'est une chose très pratique et fonctionne très simplement.
Pour chaque profil (peu importe comment il s'appellera), ses propres paramètres doivent être définis, à moins bien sûr que vous envisagiez d'utiliser des scripts, des systèmes cms et des applications avec des paramètres différents.
Sinon, vous pouvez vous débrouiller avec les paramètres par défaut.
Quant au courrier SMTP ru, tout est identique ici.
Les données Yandex sont remplacées par des données mail ru
Envoi de mail via smtp google
Afin de configurer l'envoi de courrier via Google SMTP, cela demande un petit effort.
Premièrement, créer un profil dans Google est plus difficile que dans d'autres systèmes Yandex et mail ru
Deuxièmement, le système ne laissera pas simplement passer la lettre, même si vous fournissez vos informations de connexion. Pour commencer, elle enverra une lettre contenant toutes les informations nécessaires sur des instructions supplémentaires.
Sinon Pour Google, la configuration est exactement la même. Seules toutes les données changent.
Pour configurer l'envoi de courrier via un autre SMTP, toutes les données seront à peu près les mêmes.
Si tout s'est bien passé pour vous et que les lettres sont parvenues au destinataire spécifié, alors tout a été fait correctement. Ce serait formidable si vous partagiez vos expériences dans les commentaires.
Pour qu'un certain site Web ait la possibilité de fonctionner de manière efficace et productive, sa création doit être abordée de manière aussi responsable et prudente que possible. Le choix du système qui sera utilisé pour créer une boutique en ligne mérite une attention particulière. Le fait est qu'une plateforme commerciale spécialisée dans la vente de biens ou de services doit permettre la mise en œuvre de toutes les fonctionnalités nécessaires et être simple à utiliser, tant pour les administrateurs impliqués dans la maintenance et le remplissage des sites que pour les clients des boutiques en ligne. De nombreuses personnes et entreprises confrontées à la question de choisir un CMS qui leur convient analysent s'il convient de choisir Magento ou OkayCMS. Comparons les fonctionnalités et les capacités de ces moteurs de sites Web.
Lorsqu'elle travaille sur son propre site Web, une personne ou une entreprise devra déployer beaucoup d'efforts - ce n'est que dans ce cas que vous pourrez compter sur des résultats positifs et obtenir un outil vraiment efficace. L’une des questions fondamentales à résoudre avant même de commencer à créer un site Web sera de savoir comment décider de l’option CMS la plus adaptée. Ensuite, nous comparerons deux CMS : Joomla ou OkayCMS, et ferons attention aux fonctionnalités de chacun d'eux.
Avoir votre propre site Web est l’une des exigences fondamentales pour une entreprise efficace et prospère. Les statistiques indiquent clairement une augmentation du nombre d'achats de biens divers et de commandes de services via Internet. Compte tenu de cela, la plupart des entreprises commerciales sont déjà conscientes de la nécessité de disposer de leur propre site Web. Cependant, le simple fait de disposer d’une ressource Internet ne suffit pas pour compter sur son efficacité, sa rentabilité et les bénéfices commerciaux attendus.
Lorsque vous vous préparez à créer votre propre site Web ou à ouvrir une boutique en ligne, vous devez prendre en compte et analyser de nombreux problèmes, ainsi que résoudre divers problèmes. Ce n'est que dans ce cas que vous pourrez compter sur le fait que votre projet apportera des résultats positifs et pourra pleinement répondre à vos attentes. Parmi les différentes problématiques liées au développement d’une boutique en ligne, la question du choix d’un CMS mérite une attention particulière. Pour vous permettre de décider plus facilement du moteur optimal pour vous-même, dans
Lorsqu'ils envisagent de créer leur propre site Internet pour une future boutique en ligne, un assez grand nombre de personnes et même des entreprises spécialisées dans la vente sont confrontées à un choix difficile et extrêmement important : lequel des CMS existants choisir. Si vous réfléchissez à ce qu'il faut choisir : PrestaShop ou OkayCMS, nous vous proposons de lire cet article, dans lequel nous comparerons ces deux systèmes de création de sites Internet, notamment de boutiques en ligne.
L'envoi de messages anonymes depuis des serveurs d'hébergement virtuels Windows étant interdit, l'envoi de courriers doit se faire via un serveur SMTP, pour lequel il est également possible d'utiliser notre système de messagerie.
Comment envoyer des emails en utilisant PHP ?
Utiliser n'importe quelle classe PHP prenant en charge l'autorisation sur le serveur SMTP. Par exemple, vous pouvez utiliser l'ensemble de classes PHPMailer.
Vous pouvez également utiliser notre exemple, qui implémente l'envoi de lettres via un serveur SMTP, qui nécessite une autorisation. Par conséquent, n'oubliez pas d'ajouter les détails d'accès appropriés au script, par exemple :
// Si vous devez afficher le journal de la session SMTP, vous pouvez décommenter la ligne suivante. // $_SERVER["debug"] = vrai ; fonction MailSmtp ($reciever, $subject, $content, $headers, $debug = 0) ( $smtp_server = "smtp.site"; // Adresse du serveur SMTP$smtp_port = 25 ; //Port du serveur SMTP$smtp_user = " [email protégé]"
;
// Nom d'utilisateur pour l'autorisation sur le serveur SMTP$smtp_password = "pAsSwORd" ; // Mot de passe d'autorisation sur le serveur SMTP$mail_from = " [email protégé]"
;
// Boîte aux lettres à partir de laquelle la lettre est envoyée$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30) ; $str = fgets ($chaussette, 512) ; if (! $sock ) ( printf ( "Le socket n'est pas créé\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock, "CONNEXION AUTHIQUE"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock , "MAIL DE :<"
.
$mail_from
.
">" ); smtp_msg ($sock, "RCPT TO :<"
.
$reciever
.
">" ); smtp_msg ($sock , "DATA" ); $headers = "Sujet : " . $subject . "\r\n" . $headers ; $data = $headers . "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) fonction smtp_msg ($sock , $msg ) ( si ( ! $sock ) ( printf ("Socket cassé!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ( "Envoyer de notre part : %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ( "Le socket est down\n" ); exit(1); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Obtenu du serveur : %s
" , nl2br (htmlspecialchars ($str )); ) $e = exploser (" " , $str ); $code = array_shift ($e ); $str = imploser ( " " , $e ); if ($code > 499 ) ( printf ( "Problèmes avec la conversation SMTP.
Code %d.
Messages
"
, $code , $str ); sortie(1); ) ) ) ?>
Téléchargez un exemple de script prêt à l'emploi avec la fonction MailSmtp() : smtpauth.php.sample
Vous pouvez utiliser la fonction MailSmtp() décrite ci-dessus pour remplacer directement la fonction mail() ; prenons un exemple de la forme la plus simple en PHP :
// En-têtes de message, ils définissent l'encodage du message, les champs De, À, etc.$headers = "Version MIME : 1.0\r\n" ; $en-têtes .= "Type de contenu : texte/html ; charset=windows-1251\r\n"; $headers .= "À : $à \r\n" ; $en-têtes .= "De : Nom de l'expéditeur "
;
// mail ($à, $sujet, $message, $en-têtes); require_once "smtpauth.php" ; MailSmtp ($à, $sujet, $message, $en-têtes) ; ) ?>
Pour que ce formulaire fonctionne sans la fonction mail(), nous avons inclus le fichier smtpauth.php via require_once et appelé la fonction MailSmtp() qui y est décrite avec des arguments similaires à mail(). En parallèle, nous avons commenté l'appel mail() lui-même dans le code pour éviter les erreurs lors de l'exécution du script.
Comment envoyer des e-mails en utilisant ASP.NET ?
Si vous utilisez la version 2.0, utilisez la classe MailMessage Système.Net.Mail), bien décrit.
Vous trouverez ci-dessous des exemples de son utilisation pour les langages C# et VisualBasic :
Exemple pour le langage C# :
<% @Page Language="c#" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
MailMessage message = new MailMessage(); // création d'une nouvelle lettre message.À.Ajouter(" [email protégé]"); // ajout de l'adresse du destinataire message.From = new MailAddress("de@ domaine.tld", "Nom de l'expéditeur"); // précisant le nom et l'adresse de l'expéditeur message.Sujet = "Sujet du message"; // précisant le sujet de la lettre message.BodyEncoding = System.Text.Encoding.UTF8; // spécifiant l'encodage des lettres message.IsBodyHtml = false; // spécifiant le format de la lettre (true - HTML, false - pas HTML) message.Body = "Texte du message"; // précisant le texte (corps) de la lettre Client SmtpClient = new SmtpClient("smtp.site",25); // création d'une nouvelle connexion au serveur "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // définit la méthode d'envoi des messages client.EnableSsl = false; // désactive la nécessité d'utiliser une connexion sécurisée au serveur client.UseDefaultCredentials = false; // désactive l'utilisation des détails d'autorisation par défaut client.Credentials = new NetworkCredential("postmaster@ domaine.tld", "***mot de passe***"); // précisant les détails nécessaires (nom d'utilisateur et mot de passe) pour l'autorisation sur le serveur SMTP client.Send(message); // envoyer le message
%>
Téléchargez un exemple de formulaire terminé démontrant l'utilisation de cette méthode : MailForm.aspx.
Exemple pour le langage VisualBasic :
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
Dim smtpMssg AS new MailMessage
smtpMssg.From = New MailAddress ("admin@domaine.tld", "Nom_de l'expéditeur") smtpMssg.To.Add (" [email protégé]") " ajout de l'adresse du destinataire smtpMssg.Subject = "Objet de l'e-mail" "indication de l'objet de la lettre smtpMssg.Body = "Texte du message" " indication du texte (corps) de la lettre smtpMssg.BodyEncoding = Système.Text.Encoding.UTF8 " indication de l'encodage des lettres smtpMssg.IsBodyHtml = faux " indication du format de la lettre (vrai - HTML, faux - pas HTML) Atténuer SmtpMail en tant que nouveau SmtpClient("smtp.site", 25) " déclaration d'un nouvel objet de type "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "indication du mode de livraison de la lettre SmtpMail.UseDefaultCredentials = False "désactiver l'utilisation des informations d'autorisation par défaut" SmtpMail.EnableSsl = Faux " désactive la nécessité d'utiliser une connexion sécurisée au serveur SmtpMail.Credentials = new NetworkCredential("postmaster@ domaine.tld", "***mot de passe***") "indiquant les détails nécessaires (nom d'utilisateur et mot de passe) pour l'autorisation sur le serveur SMTP SmtpMail.Send(smtpMssg) "envoyer un message
%>
Il existe également une classe SmtpMail obsolète (et obsolète) (utilisant l'espace de noms Système.Web.Mail). Ci-dessous un exemple de son utilisation pour le langage VisualBasic :
<% @Page Language="VB" Debug="true" %>
<% @Import Namespace="System.Web" %>
<% @Import Namespace="System.Web.Mail" %>
<%
Dim smtpMssg = new MailMessage " déclaration d'un nouvel objet de type "MailMessage" smtpMssg.From = "Nom_expéditeur domaine.tld>" "Indication du nom et de l'adresse de l'expéditeur smtpMssg.To = "admin@ domaine.tld" "indication de l'adresse du destinataire smtpMssg.BodyFormat = MailFormat.Text " indication du format de la lettre smtpMssg.BodyEncoding = Encodage.UTF8 "indiquant le codage des lettres smtpMssg.Subject = "Objet de l'e-mail" "indication de l'objet de la lettre smtpMssg.Body = "Texte du message" "indication du texte de la lettre smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "indiquant la nécessité d'une autorisation SMTP sur le serveur smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domaine.tld") "nom d'utilisateur pour l'autorisation smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***password***") "mot de passe pour l'autorisation SmtpMail.SmtpServer = "smtp.site" " en précisant l'adresse du serveur SMTP SmtpMail.Send(smtpMssg) "envoyer un message
%>
Comment envoyer des emails en utilisant ASP ?
Veuillez noter que lors de l'utilisation de notre serveur smtp, une autorisation est requise, alors n'oubliez pas d'ajouter les détails d'accès appropriés au script, par exemple :
<%
iConfig = Server.CreateObject("CDO.Configuration")
Set iConfig = Server.CreateObject("CDO.Configuration")
With iConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domaine.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mot de passe" .La mise à jour se termine par Set cdoMessage = CreateObject("CDO.Message") Avec cdoMessage Set .Configuration = iConfig .From = "Tester l'utilisateur domaine.tld>" .À = "Utilisateur " .Subject = "Bonjour, utilisateur" .TextBody = "J'écris ce message à partir d'un script ASP." .Send End With Set cdoMessage = Nothing Set iConfig = Nothing %>
Certains CMS disposent déjà d’outils intégrés d’envoi de correspondance ou de modules correspondants ; regardons les plus populaires.
WordPress
Pour ce CMS il existe un module spécial « WP Mail SMTP », un exemple de sa configuration est décrit sur la page du module.
Faites attention à l'illustration de l'exemple : dans notre système de messagerie, il est nécessaire d'utiliser le port 25 et le cryptage SSL n'est pas requis.
Joomla
Dans le panneau d'administration, allez dans la section « Paramètres généraux », sélectionnez l'onglet « Serveur ». Dans le champ « Mail », vous devez sélectionner la méthode d'envoi comme « Serveur SMTP », dans les champs « Adresse du serveur SMTP » et « Connexion SMTP » et « Mot de passe SMTP » spécifiez les détails appropriés du système de messagerie, par exemple : smtp.site, box@votre_domaine et correspondant mot de passe.
Drupal
Ce CMS possède également son propre module pour travailler avec un serveur SMTP, basé sur le PHPMailer. Vous pouvez télécharger ce module sur sa page du site du CMS Drupal, une description de l'installation du module est disponible dans l'archive qui l'accompagne.
NetCat
Ce CMS n'a pas de fonctions intégrées pour travailler avec un serveur SMTP. Pour envoyer du courrier à l'aide des scripts du site, nous pouvons vous proposer d'utiliser notre solution ; pour la connecter vous devez effectuer les étapes suivantes :
domaine.tld doit être remplacé par votre nom de domaine.
La solution proposée fonctionne avec tous les modules NetCat qui utilisent les fonctions standards de ce CMS pour envoyer du mail.