Partage de technologie

.net C# Utilisez la boîte aux lettres NetEase 163 pour créer un service SMTP afin de réaliser la fonction d'envoi d'e-mails

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Description de la fonction : utilisez la vérification par e-mail pour réaliser l'activation de l'enregistrement des utilisateurs et la récupération du mot de passe. La boîte aux lettres sélectionne NetEase 163 comme serveur SMTP.

Situation de test réelle : Type 1 : Le port 25 de la plupart des opérateurs de serveur est bloqué par défaut. Vous pouvez contacter l'opérateur pour débloquer le port 25. Après déblocage, le port 25 peut être utilisé. Le deuxième type : utilisez les ports cryptés 465 et 587. Après le test, le port 587 n'a pas pu envoyer et a renvoyé "Impossible de lire les données de la connexion de transmission", donc seule la configuration du port 465 est effectuée ici. Vous trouverez ci-dessous les codes de deux cas réussis. Veuillez choisir en fonction de la situation réelle.

Grâce aux informations sur Internet, j'ai appris que le port 587 des boîtes aux lettres Alibaba et QQ n'a pas non plus réussi à envoyer. On sait donc actuellement que le port 587 du service stmp des trois principaux opérateurs NetEase, Alibaba et QQ a échoué.

Première étape : démarrez le service SMTP. Connectez-vous à la boîte aux lettres NetEase [Paramètres] - recherchez [POP3/SMTP/IMAP] dans le menu de gauche, activez le service et obtenez le mot de passe d'autorisation (remarque : le mot de passe dans le code utilise le mot de passe d'autorisation).Réglez comme indiqué sur l'image

Étape 2 : Configurez les règles de pile de pare-feu du serveur et ajoutez le port 465.

Étape 3 : Coder.

Send25 est une méthode pour tester la possibilité d'envoyer des emails sur le port 25. Bibliothèque de classes utilisée System.Net.Mail

public void Send25()
        {

//this.SmtpHost //Spécifiez l'adresse du serveur smtp

//this.SmtpPort //port du serveur SMTP

//this.FromEmailAddress //L'adresse email pour l'envoi des emails

//this.FormEmailPassword //Mot de passe de messagerie pour l'envoi d'e-mails, le code d'autorisation est utilisé ici

//this.ToList //L'adresse e-mail de réception des e-mails, qui peut être une collection séparée par des virgules


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//Définition de la sécurité
SmtpClient smtp = new SmtpClient(); //Instancier un SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //Définit le mode sortant de smtp sur Réseau
smtp.EnableSsl = false; //Si le serveur smtp active le cryptage SSL
smtp.Host = this.SmtpHost; //Spécifiez l'adresse du serveur smtp
smtp.Port = this.SmtpPort; //Spécifiez le port du serveur smtp. La valeur par défaut est 25. Si le port par défaut est utilisé, il peut être omis.
smtp.UseDefaultCredentials = true; //Si votre serveur SMTP ne nécessite pas d'authentification d'identité, utilisez la méthode suivante. Cependant, actuellement, aucune authentification n'est nécessaire.
//smtp.EnableSsl = false;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //Si une authentification est requise, utilisez la méthode suivante

MailMessage mm = new MailMessage(); //Instancier une classe de courrier
mm.Priority = MailPriority.Normal; //La priorité de l'e-mail est divisée en Faible, Normale et Élevée. Généralement, Normale peut être utilisée.
mm.From = new MailAddress(this.FromEmailAddress, "Administrateur", Encoding.GetEncoding(936));

//destinataire
si (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(cette.liste.à.ajouter);
//Cc personne
si (!string.IsNullOrEmpty(this.CCList))
mm.CC.Add(cette.CCList);
//CC
si (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(cette.BccList);

mm.Subject = this.Subject; //Titre de l'e-mail
mm.SubjectEncoding = Encoding.GetEncoding(936); //Ceci est très important si le titre de votre e-mail contient du chinois, il doit être spécifié ici, sinon l'autre partie recevra probablement des caractères tronqués.
mm.IsBodyHtml = this.IsBodyHtml; //Si le corps de l'e-mail est au format HTML
mm.BodyEncoding = Encoding.GetEncoding(936); //L'encodage du corps de l'e-mail est mal défini et le destinataire recevra des caractères tronqués.
mm.Body = this.Body; //Texte de l'e-mail
//Pièce jointe au courrier
si (this.AttachmentList != null && this.AttachmentList.Count > 0)
            {
foreach (Pièce jointe dans this.AttachmentList)
                {
mm.Attachments.Add(pièce jointe);
                }
            }
smtp.Envoyer(mm);

        }

Send465 est une méthode permettant de tester la possibilité d'envoyer des emails sur le port 465. Bibliothèque de classes utilisée System.Web.Mail

public booléen Send465()
        {
// Sujet du courriel
System.Web.Mail.MailMessage mmsg = nouveau System.Web.Mail.MailMessage();
//Sujet du courriel
mmsg.Sujet = "Sujet";
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//Texte de l'e-mail
mmsg.Body = "Texte" ;

//Encodage du texte
mmsg.BodyEncoding = Encodage.UTF8;
//priorité
mmsg.Priority = System.Web.Mail.MailPriority.Normal;
//Adresse email de l'expéditeur
mmsg.De = E-mail;
//Adresse de la boîte de réception du destinataire
mmsg.À = e-mail;

mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//nom d'utilisateur
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", E-mail);
//Mot de passe (code d'autorisation)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//port
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", Port);
//Que ce soit SSL
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//Serveur SMTP
System.Web.Mail.SmtpMail.SmtpServer = Hôte ;
essayer
            {
Système.Web.Mail.SmtpMail.Send(mmsg);
renvoie vrai ;
            }
attraper (Exception ex)
            {
retourner faux;
            }
        }