Travailler avec le courrier électronique. Envoi d'e-mails par programmation à l'aide de divers services Envoyer un message à la messagerie c
Envoi d'e-mails programmé à l'aide de divers services
- .RAPPORTER,
Très souvent, vous devez faire face à l'envoi e-mailsà partir du code du programme. Vous n'avez pas besoin d'aller loin pour des exemples.
Cet article est un indice et n'ouvre rien de nouveau, mais avant de l'écrire, j'ai regardé quelque chose de similaire sur Internet et j'ai été plutôt surpris que presque partout ils offrent une solution qui ne fonctionne pas ou qui est obsolète, ou qui est simplement écrit de manière illettrée.
La première chose à ne pas faire avec ces exemples est d'utiliser System.Web.Mail, qui a longtemps été déprécié, et en commençant par Visual Studio 2010, vous ne pouvez même pas ajouter la bibliothèque System.Web sans connaître le chemin complet de la DLL correspondante.
Au lieu de cela, il est suggéré d'utiliser la bibliothèque System.Net.
en utilisant System.Net ; en utilisant System.Net.Mail ;
Donc, le plus simple, c'est le plus important et souvent utilisé est d'envoyer une lettre de votre serveur de courrier sur lequel le client SMTP est configuré. Comme vous le comprenez, le serveur peut être soit celui sur lequel tourne l'application, soit un serveur distant, sur lequel vous avez le droit d'envoyer des courriers sans autorisation supplémentaire.
Exemple de code pour envoyer une lettre depuis une machine locale :
À l'aide de services postaux tels que Gmail, Yandex, Mail.ru, etc. tout est pareil, seuls les paramètres avec autorisation sont ajoutés.
Serveur SMTP : smtp.gmail.com
Port : 587
using (MailMessage mm = nouveau MailMessage ("Nom
Serveur SMTP : smtp.yandex.ru
Port : 25
using (MailMessage mm = nouveau MailMessage ("Nom
Serveur SMTP : smtp.mail.ru
Port : 25
using (MailMessage mm = nouveau MailMessage ("Nom
Si tu as boites aux lettres sur le service mail.ru se termine par inbox.ru, list.ru ou bk.ru, puis l'adresse du serveur SMTP (smtp.inbox.ru, smtp.list.ru et smtp.bk.ru) change en conséquence.
Comme vous pouvez le voir, pour utiliser tout autre service de messagerie dans vos programmes, il vous suffit de connaître l'adresse et le port du serveur SMTP, ainsi que les règles d'autorisation.
Il ne faut pas oublier non plus que presque tous les tiers services postaux imposer des limites sur le nombre d'e-mails envoyés sur une période de temps.
Tags : e-mail, envoi d'e-mails, smtp
L'une des fonctions les plus demandées sur le site est la demande ou le bon de commande, dont les données sont envoyées par courrier au propriétaire du site. En règle générale, ces formulaires sont simples et se composent de deux ou trois champs pour la saisie des données. Comment créer un tel bon de commande ? Cela nécessitera l'utilisation d'un langage balisage HTML et le langage de programmation PHP.
Le langage de balisage HTML lui-même est simple, il vous suffit de comprendre comment et où mettre certaines balises. Avec le langage de programmation PHP, les choses sont un peu plus compliquées.
Il ne sera pas difficile pour un programmeur de créer un tel formulaire, mais pour un codeur HTML, certaines actions peuvent sembler difficiles.
Créer un formulaire pour soumettre des données en html
La première ligne sera la suivante
Maintenant, rassemblons le tout.
Nous allons maintenant rendre les champs du formulaire obligatoires. Nous avons le code suivant :
Créer un fichier qui accepte les données d'un formulaire HTML
Ce sera un fichier nommé send.php
Dans le fichier, à la première étape, vous devez accepter les données du tableau post. Pour ce faire, nous créons deux variables :
$ fio = $ _POST ["fio"];
$ e-mail = $ _POST ["e-mail"] ;
Les noms de variables PHP sont précédés d'un signe $ et d'un point-virgule à la fin de chaque ligne. $ _POST est un tableau auquel les données du formulaire sont transmises. Dans le formulaire html, la méthode de soumission est spécifiée comme méthode = "post". Ainsi, deux variables sont extraites de formulaires html... Dans le but de protéger votre site, vous devez passer ces variables à travers plusieurs filtres - fonctions php.
La première fonction convertit tous les caractères que l'utilisateur essaie d'ajouter au formulaire :
Dans ce cas, les nouvelles variables en php ne sont pas créées, mais celles existantes sont utilisées. Ce que le filtre fera, c'est convertir le caractère "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
La deuxième fonction décodera l'url si l'utilisateur essaie de l'ajouter au formulaire.
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
Dans la troisième fonction, nous supprimerons les espaces au début et à la fin de la chaîne, le cas échéant :
$ fio = rogner ($ fio);
$ email = trim ($ email);
Il existe également d'autres fonctions pour filtrer les variables php. Leur utilisation dépend de combien vous craignez qu'un attaquant essaie d'ajouter du code à cette forme d'envoi de données au courrier html.
Validation des données transmises du formulaire HTML au fichier PHP
Afin de vérifier si ce code fonctionne, si les données sont en cours de transfert, vous pouvez simplement l'afficher à l'écran grâce à la fonction echo :
echo $fio;
écho "
";
echo $ e-mail ;
La deuxième ligne sert à diviser la sortie des variables php en différentes lignes.
Envoi des données reçues du formulaire HTML au courrier en utilisant PHP
Pour envoyer des données à la messagerie, vous devez utiliser la fonction de messagerie en PHP.
mail ("à quelle adresse envoyer", "objet de la lettre", "Message (corps du message)", "De : à partir de quelle adresse e-mail la lettre est envoyée\r\n");
Par exemple, vous devez envoyer des données à l'adresse e-mail du propriétaire ou du gestionnaire du site [email protégé]
La ligne d'objet de l'e-mail doit être claire et l'e-mail doit contenir ce que l'utilisateur a spécifié dans le formulaire HTML.
courrier (" [email protégé]"," Application du site "," Nom complet : ". $ Fio.". Courriel : ". $ Courriel," De : [email protégé]\r\n");
Vous devez ajouter une condition qui vérifiera si le formulaire a été soumis en utilisant PHP à l'adresse e-mail spécifiée.
si (courrier (" [email protégé]"," Commande sur le site "," Nom complet : ". $ Fio.". Courriel : ". $ Courriel," De : [email protégé]\r\n"))
{
echo "message envoyé avec succès" ;
) autre (
}
Ainsi, le code du programme du fichier send.php qui enverra les données du formulaire HTML au courrier ressemblera à ceci :
$ fio = $ _POST ["fio"];
$ e-mail = $ _POST ["e-mail"] ;
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = rogner ($ fio);
$ email = trim ($ email);
// echo $ fio;
// écho "
";
// echo $ email;
si (courrier (" [email protégé]"," Application du site "," Nom complet : ". $ Fio.". Courriel : ". $ Courriel," De : [email protégé]\r\n"))
(écho "message envoyé avec succès" ;
) autre (
echo "des erreurs se sont produites lors de l'envoi du message" ;
}?>
Trois lignes pour vérifier si les données transmises au fichier sont commentées. Si nécessaire, vous pouvez les supprimer, car ils n'étaient nécessaires que pour le débogage.
Mettre le code de soumission de formulaire HTML et PHP dans un seul fichier
Dans les commentaires de cet article, de nombreuses personnes se posent la question de savoir comment créer à la fois le formulaire HTML et le code PHP pour envoyer des données à la messagerie dans un seul fichier, pas deux.
Pour implémenter un tel travail, vous devez mettre le code HTML du formulaire dans le fichier send.php et ajouter une condition qui vérifiera la présence de variables dans le tableau POST (ce tableau est passé depuis le formulaire). Autrement dit, si les variables du tableau n'existent pas, vous devez alors montrer le formulaire à l'utilisateur. Sinon, vous devez accepter les données de la baie et les envoyer au destinataire.
Voyons comment modifier le code PHP dans le fichier send.php :
// vérifie si les variables existent dans le tableau POST
if (! isset ($ _ POST ["fio"]) et! isset ($ _ POST ["email"])) (
?> ) autre (
// afficher le formulaire
$ fio = $ _POST ["fio"];
$ e-mail = $ _POST ["e-mail"] ;
$ fio = htmlspecialchars ($ fio);
$ email = htmlspecialchars ($ email);
$ fio = urldecode ($ fio);
$ email = urldecode ($ email);
$ fio = rogner ($ fio);
$ email = trim ($ email);
si (courrier (" [email protégé]"," Application du site "," Nom complet : ". $ Fio.". Courriel : ". $ Courriel," De : [email protégé]\r\n")) (
echo "Message envoyé avec succès" ;
) autre (
echo "Il y a eu des erreurs lors de l'envoi du message" ;
}
}
?>
Nous vérifions l'existence d'une variable dans le tableau POST à l'aide de la fonction PHP isset(). Un point d'exclamation avant cette fonction dans une condition signifie une négation. Autrement dit, si la variable n'existe pas, nous devons afficher notre formulaire. Si je n'avais pas mis de point d'exclamation, alors la condition signifierait littéralement - "s'il existe, alors montrez le formulaire". Et c'est faux dans notre cas. Naturellement, vous pouvez le renommer en index.php. Si vous renommez le fichier, n'oubliez pas de renommer le nom du fichier et dans la ligne