Compartir tecnología

.net C# Utilice el buzón NetEase 163 para crear un servicio smtp para realizar la función de envío de correos electrónicos

2024-07-12

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

Descripción de la función: utilice la verificación por correo electrónico para realizar la activación del registro de usuario y la recuperación de contraseña. El buzón selecciona NetEase 163 como servidor SMTP.

Situación de prueba real: Tipo 1: el puerto 25 de la mayoría de los operadores de servidores está bloqueado de forma predeterminada. Puede comunicarse con el operador para desbloquear el puerto 25. Después de desbloquearlo, se puede usar el puerto 25. El segundo tipo: utilice los puertos cifrados 465 y 587. Después de la prueba, el puerto 587 no pudo enviar y devolvió "No se pueden leer datos de la conexión de transmisión", por lo que aquí solo se realiza la configuración del puerto 465. A continuación se muestran los códigos de dos casos exitosos. Elija según la situación real.

De la información en Internet, supe que el puerto 587 de los buzones de correo de Alibaba y QQ tampoco se pudo enviar, por lo que actualmente se sabe que el puerto de servicio stmp 587 de los tres principales operadores NetEase, Alibaba y QQ falló.

Paso uno: inicie el servicio smtp. Inicie sesión en el buzón de correo de NetEase [Configuración] - busque [POP3/SMTP/IMAP] en ​​el menú de la izquierda, habilite el servicio y obtenga la contraseña de autorización (nota: la contraseña en el código utiliza la contraseña de autorización).Establecer como se muestra en la imagen.

Paso 2: configure las reglas de la pila del firewall del servidor y agregue el puerto 465.

Paso 3: Código.

Send25 es un método para probar la capacidad de enviar correos electrónicos en el puerto 25. Biblioteca de clases utilizada System.Net.Mail

vacío público Send25()
        {

//this.SmtpHost //Especifica la dirección del servidor SMTP

//this.SmtpPort //puerto del servidor smtp

//this.FromEmailAddress //La dirección de correo electrónico para enviar correos electrónicos

//this.FormEmailPassword //Contraseña de correo electrónico para enviar correos electrónicos, aquí se utiliza el código de autorización

//this.ToList //La dirección de correo electrónico para recibir correos electrónicos, que puede ser una colección separada por comas


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//Debe especificarse el tipo
SmtpClient smtp = new SmtpClient(); //Crear una instancia de un SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network //Establece el modo de salida de smtp en Red;
smtp.EnableSsl = false; //Si el servidor SMTP habilita el cifrado SSL
smtp.Host = this.SmtpHost; //Especifique la dirección del servidor SMTP
smtp.Port = this.SmtpPort; //Especifique el puerto del servidor smtp. El valor predeterminado es 25. Si se utiliza el puerto predeterminado, se puede omitir.
smtp.UseDefaultCredentials = true; //Si su servidor SMTP no requiere autenticación de identidad, utilice el siguiente método. Sin embargo, actualmente básicamente no hay necesidad de autenticación.
//smtp.EnableSsl = falso;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //Si se requiere autenticación, utilice el siguiente método;

MailMessage mm = new MailMessage(); //Crear una instancia de una clase de correo
mm.Priority = MailPriority.Normal; //La prioridad del correo electrónico se divide en Baja, Normal y Alta. Generalmente se puede utilizar.
mm.From = new MailAddress(this.FromEmailAddress, "Administrador", Encoding.GetEncoding(936));

//recipiente
si (!string.IsNullOrEmpty(esto.ToList))
mm.Para.Agregar(esto.AListar);
//Cc de persona
si (!string.IsNullOrEmpty(este.CCList))
mm.CC.Add(este.CCList);
// CC
si (!string.IsNullOrEmpty(este.BccList))
mm.Bcc.Add(este.BccList);

mm.Subject = this.Subject; //Título del correo electrónico
mm.SubjectEncoding = Encoding.GetEncoding(936); //Esto es muy importante. Si el título de su correo electrónico contiene chino, debe especificarlo aquí; de lo contrario, lo más probable es que la otra parte reciba caracteres confusos.
mm.IsBodyHtml = this.IsBodyHtml; //Si el cuerpo del correo electrónico está en formato HTML
mm.BodyEncoding = Encoding.GetEncoding(936); //La codificación del cuerpo del correo electrónico está configurada incorrectamente y el destinatario recibirá caracteres confusos.
mm.Body = this.Body; //Texto del correo electrónico
//Archivo adjunto de correo
si (este.AttachmentList != null && este.AttachmentList.Count > 0)
            {
foreach (Archivo adjunto en this.AttachmentList)
                {
mm.Archivos adjuntos.Agregar(archivo adjunto);
                }
            }
smtp.Enviar(mm);

        }

Send465 es un método para probar la capacidad de enviar correos electrónicos en el puerto 465. Biblioteca de clases utilizada System.Web.Mail

booleano público Send465()
        {
// Asunto del email
Sistema.Web.Mail.MailMessage mmsg = nuevo Sistema.Web.Mail.MailMessage();
//Asunto del email
mmsg.Subject = "Asunto";
mmsg.BodyFormat = Sistema.Web.Mail.MailFormat.Html;
//Texto del correo electrónico
mmsg.Body = "Texto";

//Codificacion de texto
mmsg.BodyEncoding = Codificación.UTF8;
//prioridad
mmsg.Prioridad = Sistema.Web.Mail.MailPriority.Normal;
//Dirección de correo electrónico del remitente
mmsg.From = Correo electrónico;
//Dirección de la bandeja de entrada del destinatario
mmsg.To = correo electrónico;

mmsg.Campos.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//nombre de usuario
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", Correo electrónico);
//Contraseña (código de autorización)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//puerto
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", Puerto);
//Si ssl
mmsg.Campos.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//Servidor SMTP
Sistema.Web.Mail.SmtpMail.SmtpServer = Host;
intentar
            {
Sistema.Web.Mail.SmtpMail.Send(mmsg);
devuelve verdadero;
            }
captura (Excepción ej.)
            {
falso retorno;
            }
        }