Technologieaustausch

.net C# Verwenden Sie das NetEase 163-Postfach, um einen SMTP-Dienst zu erstellen und die Funktion des E-Mail-Versands zu realisieren

2024-07-12

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

Funktionsbeschreibung: Verwenden Sie die E-Mail-Verifizierung, um die Aktivierung der Benutzerregistrierung und den Abruf des Passworts zu realisieren. Das Postfach wählt NetEase 163 als SMTP-Server.

Reale Testsituation: Typ 1: Port 25 ist bei den meisten Serverbetreibern standardmäßig blockiert. Sie können den Betreiber kontaktieren, um Port 25 zu entsperren. Nach der Entsperrung kann Port 25 verwendet werden. Der zweite Typ: Verwenden Sie 465- und 587-verschlüsselte Ports. Nach dem Test konnte der 587-Port nicht senden und es wurde „Daten von der Übertragungsverbindung konnten nicht gelesen werden“ zurückgegeben, sodass hier nur die 465-Port-Konfiguration durchgeführt wird. Nachfolgend finden Sie die Codes von zwei erfolgreichen Fällen. Bitte wählen Sie entsprechend der tatsächlichen Situation aus.

Aus den Informationen im Internet habe ich erfahren, dass der 587-Port der Alibaba- und QQ-Postfächer ebenfalls nicht gesendet werden konnte. Daher ist derzeit bekannt, dass der StMP-Service-Port 587 der drei großen Betreiber NetEase, Alibaba und QQ ausgefallen ist.

Schritt eins: Starten Sie den SMTP-Dienst. Melden Sie sich beim NetEase-Postfach an [Einstellungen] – suchen Sie im linken Menü nach [POP3/SMTP/IMAP], aktivieren Sie den Dienst und erhalten Sie das Autorisierungskennwort (Hinweis: Verwenden Sie das Autorisierungskennwort für das Passwort im Code).Wie im Bild dargestellt einstellen

Schritt 2: Richten Sie die Server-Firewall-Stack-Regeln ein und fügen Sie Port 465 hinzu.

Schritt 3: Code.

Send25 ist eine Methode zum Testen der Fähigkeit, E-Mails über Port 25 zu senden. Die Klassenbibliothek verwendet System.Net.Mail

öffentliche Leere Send25()
        {

//this.SmtpHost //Geben Sie die SMTP-Serveradresse an

//this.SmtpPort //SMTP-Server-Port

//this.FromEmailAddress //Die E-Mail-Adresse zum Senden von E-Mails

//this.FormEmailPassword //E-Mail-Passwort zum Versenden von E-Mails, hier wird der Autorisierungscode verwendet

//this.ToList //Die E-Mail-Adresse zum Empfangen von E-Mails, die eine durch Kommas getrennte Sammlung sein kann


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//Zugriff auf diesen Artikel
SmtpClient smtp = new SmtpClient(); //Instanziieren eines SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //Setzen Sie den ausgehenden Modus von SMTP auf Netzwerk
smtp.EnableSsl = false; //Ob der SMTP-Server die SSL-Verschlüsselung aktiviert
smtp.Host = this.SmtpHost; //Geben Sie die SMTP-Serveradresse an
smtp.Port = this.SmtpPort; // Geben Sie den Port des SMTP-Servers an. Der Standardwert ist 25. Wenn der Standardport verwendet wird, kann er weggelassen werden.
smtp.UseDefaultCredentials = true; //Wenn Ihr SMTP-Server keine Identitätsauthentifizierung erfordert, verwenden Sie die folgende Methode. Derzeit ist jedoch keine Authentifizierung erforderlich.
//smtp.EnableSsl = false;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //Wenn eine Authentifizierung erforderlich ist, verwenden Sie die folgende Methode

MailMessage mm = new MailMessage(); //Instanziiere eine Mail-Klasse
mm.Priority = MailPriority.Normal; // Die Priorität der E-Mail ist in „Niedrig“, „Normal“ und „Normal“ unterteilt.
mm.From = new MailAddress(this.FromEmailAddress, "Administrator", Encoding.GetEncoding(936));

//Empfänger
wenn (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(diese.ToList);
//Cc-Person
wenn (!string.IsNullOrEmpty(this.CCList))
mm.CC.Add(diese.CCList);
//CC
wenn (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(diese.BccList);

mm.Subject = this.Subject; //E-Mail-Titel
mm.SubjectEncoding = Encoding.GetEncoding(936); //Dies ist sehr wichtig. Wenn Ihr E-Mail-Titel Chinesisch enthält, muss er hier angegeben werden, da die andere Partei sonst höchstwahrscheinlich verstümmelte Zeichen erhält.
mm.IsBodyHtml = this.IsBodyHtml; //Ob der E-Mail-Text im HTML-Format vorliegt
mm.BodyEncoding = Encoding.GetEncoding(936); //Die Kodierung des E-Mail-Textes ist falsch eingestellt und der Empfänger erhält verstümmelte Zeichen.
mm.Body = this.Body; //E-Mail-Text
//Mail Anhang
wenn (diese.AttachmentList != null und diese.AttachmentList.Count > 0)
            {
foreach (Anhang-Anhang in dieser.Anhangsliste)
                {
mm.Attachments.Add(Anhang);
                }
            }
smtp.Senden(mm);

        }

Send465 ist eine Methode zum Testen der Fähigkeit, E-Mails über Port 465 zu senden. Die Klassenbibliothek verwendet System.Web.Mail

öffentliches bool Send465()
        {
// E-Mail Betreff
System.Web.Mail.MailMessage mmsg = neues System.Web.Mail.MailMessage();
//E-Mail Betreff
mmsg.Subject = "Betreff";
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//E-Mail-Text
mmsg.Body = "Text";

//Textentschlüsselung
mmsg.BodyEncoding = Kodierung.UTF8;
//Priorität
mmsg.Priority = System.Web.Mail.MailPriority.Normal;
//E-Mail-Adresse des Absenders
mmsg.From = E-Mail;
//Posteingangsadresse des Empfängers
mmsg.An = E-Mail;

mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//Nutzername
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", E-Mail);
//Passwort (Autorisierungscode)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//Hafen
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", Port);
//Ob SSL
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//SMTP-Server
System.Web.Mail.SmtpMail.SmtpServer = Host;
versuchen
            {
System.Web.Mail.SmtpMail.Send(mmsg);
gibt true zurück;
            }
catch (Ausnahme ex)
            {
falsch zurückgeben;
            }
        }