C # combinado con SMTP para realizar notificaciones de alarma por correo

Escribir al frente

C # es un lenguaje de programación de propósito general orientado a objetos lanzado por Microsoft. Además de desarrollar software para PC, sitios web (con la ayuda de  http://ASP.NET ) y APP (basado en Windows Phone), también se puede usar como un script de juego para escribir lógica de juego. . SMTP es un protocolo que proporciona una transmisión de correo electrónico confiable y eficaz. Es un servicio de correo basado en el servicio de transferencia de archivos FTP. Se utiliza principalmente para transferir información de correo entre sistemas y proporcionar notificaciones sobre cartas entrantes. Hoy compartiré principalmente con ustedes cómo implementar la notificación de alarmas a través de C # combinado con SMTP. [ Computadora host de control industrial dotNet de cuenta pública: thinger_swj]

1 Pensamiento general

C # combina SMTP para realizar notificaciones de alarma por correo. Después del análisis, debemos resolver los dos problemas siguientes:

  • La primera pregunta es cómo detectar la alarma.
  • La segunda pregunta es cómo enviar correo.

A continuación, analizamos principalmente estos dos puntos en detalle:

2 Detección de alarma

1. En aplicaciones prácticas, hay dos tipos de alarmas, una es una alarma discreta (es decir, una alarma digital), la otra es una alarma condicional (es decir, una alarma de datos) y para una alarma digital, se divide en detección de borde ascendente y Detección de borde descendente; para las alarmas condicionales, generalmente hay detección de alarma de límite alto, detección de alarma alto-alto, detección de alarma de límite bajo y detección de alarma bajo-bajo.

2. Para diferentes alarmas, los métodos de detección serán todos diferentes, pero los principios de detección son los mismos, principalmente para capturar el momento en que se genera la alarma, como el flanco ascendente de una alarma discreta. De hecho, es necesario detectar el valor de esta variable de Falso a Saltos verdaderos Para el límite superior de la alarma condicional, el valor real de la variable capturada es mayor que (o igual a) el límite superior de la alarma. Por lo tanto, la detección de alarma debe iniciar un hilo separado para la detección en tiempo real, de modo que no se pierda la información de la alarma. En cuanto a la precisión de la detección de alarma, se determina el tamaño de la detección de alarma y el rendimiento de la computadora.

3. Dado que la alarma debe combinarse con la información de configuración, no se puede mostrar directamente en el código. La siguiente es una combinación de alarma de borde ascendente y alarma de límite alto para clasificar todo el proceso, como se muestra en la siguiente figura:

3 Escritura de correo

Para C #, es muy conveniente implementar la notificación por correo electrónico. Puede llamar directamente a la biblioteca de clases relacionada para lograrlo. Aquí principalmente encapsulamos la biblioteca de clases en forma de una clase EmailHelper, y luego solo necesitamos llamar a este EmailHelper. En la clase EmailHelper, Primero, cree algunos atributos que se utilizarán en el envío de correo electrónico, incluido el remitente, el destinatario, el título, el contenido, la contraseña del remitente y otra información, como se muestra en la siguiente figura:

···

/// <summary>
    /// 发送者
    /// </summary>
    public string mailFrom { get; set; }

    /// <summary>
    /// 收件人
    /// </summary>
    public string[] mailToArray { get; set; }

    /// <summary>
    /// 抄送
    /// </summary>
    public string[] mailCcArray { get; set; }

    /// <summary>
    /// 标题
    /// </summary>
    public string mailSubject { get; set; }

    /// <summary>
    /// 正文
    /// </summary>
    public string mailBody { get; set; }

    /// <summary>
    /// 发件人密码
    /// </summary>
    public string mailPwd { get; set; }

    /// <summary>
    /// SMTP邮件服务器
    /// </summary>
    public string host { get; set; }

    /// <summary>
    /// 正文是否是html格式
    /// </summary>
    public bool isbodyHtml { get; set; }

    /// <summary>
    /// 附件
    /// </summary>
    public string[] attachmentsPath { get; set; }

···

Después de completar la creación del atributo, escriba un método para enviar correos electrónicos. La lógica del método de envío de correo electrónico es la misma que la de los correos electrónicos normales. Los pasos son los siguientes:

1. Inicialice la instancia de MailAddress con la dirección de correo especificada

2. Agregue direcciones de correo electrónico a la colección de direcciones del destinatario.

3. Agregue direcciones de correo electrónico a la colección de direcciones de destinatarios CC.

4. Establecer la información del remitente

5. Agregue archivos adjuntos cuando haya archivos adjuntos

6. Especifique la dirección de correo electrónico y la contraseña del remitente para verificar la identidad del remitente.

7. Configure el servidor de correo SMTP

8. Enviar correo al servidor de correo SMTP

El código específico es el siguiente:

···

/// <summary>
    /// 发送邮件
    /// </summary>
    /// <returns></returns>
    public bool Send()
    {
        //使用指定的邮件地址初始化MailAddress实例
        MailAddress maddr = new MailAddress(mailFrom);
        //初始化MailMessage实例
        MailMessage myMail = new MailMessage();


        //向收件人地址集合添加邮件地址
        if (mailToArray != null)
        {
            for (int i = 0; i < mailToArray.Length; i++)
            {
                myMail.To.Add(mailToArray[i].ToString());
            }
        }

        //向抄送收件人地址集合添加邮件地址
        if (mailCcArray != null)
        {
            for (int i = 0; i < mailCcArray.Length; i++)
            {
                myMail.CC.Add(mailCcArray[i].ToString());
            }
        }
        //发件人地址
        myMail.From = maddr;

        //电子邮件的标题
        myMail.Subject = mailSubject;

        //电子邮件的主题内容使用的编码
        myMail.SubjectEncoding = Encoding.UTF8;

        //电子邮件正文
        myMail.Body = mailBody;

        //电子邮件正文的编码
        myMail.BodyEncoding = Encoding.Default;

        myMail.Priority = MailPriority.High;

        myMail.IsBodyHtml = isbodyHtml;

        //在有附件的情况下添加附件
        try
        {
            if (attachmentsPath != null && attachmentsPath.Length > 0)
            {
                Attachment attachFile = null;
                foreach (string path in attachmentsPath)
                {
                    attachFile = new Attachment(path);
                    myMail.Attachments.Add(attachFile);
                }
            }
        }
        catch (Exception err)
        {
            throw new Exception("在添加附件时有错误:" + err);
        }

        SmtpClient smtp = new SmtpClient();
        smtp.EnableSsl = true;

        //指定发件人的邮件地址和密码以验证发件人身份
        smtp.Credentials = new System.Net.NetworkCredential(mailFrom, mailPwd);


        //设置SMTP邮件服务器
        smtp.Host = host;

        try
        {
            //将邮件发送到SMTP邮件服务器
            smtp.Send(myMail);
            return true;

        }
        catch (System.Net.Mail.SmtpException ex)
        {
            return false;
        }
    }
    
    
    ···

4 Envío de correo

  • Aquí primero debe configurar un correo electrónico y seguir las instrucciones para abrir los siguientes servicios. Después de la activación, se proporcionará una contraseña. Por lo tanto, la contraseña utilizada para enviar el correo electrónico no es la contraseña de inicio de sesión del correo electrónico, sino una contraseña generada después de que se activan los siguientes servicios.

 

[ Computadora host de control industrial dotNet de cuenta pública: thinger_swj]

  • Para facilitar el establecimiento del entorno general, utilizo el software de configuración de PC Xingge Education (CMSPro) combinado con el PLC Siemens S7-1200 para las pruebas funcionales.Primero, configure algunas variables a través de CMSPro, como se muestra en la siguiente figura:

 

  • Para cada variable, configure la alarma, tome el flanco ascendente de la configuración M8.0 como ejemplo:

 

  • De la misma manera, establezca otras variables en la configuración de alarma correspondiente. Una vez completada la configuración, haga clic en Guardar y ejecutar:

[ Computadora host de control industrial dotNet de cuenta pública: thinger_swj]

  • Como se puede ver en la figura anterior, el M8.0 actual es Falso, configure M8.0 manualmente o configure M8.0 a través del software TIA Botu. En este momento, se recibirá un correo electrónico de alarma en el buzón y luego M8 .0 restablecer, recibirá un correo electrónico de alarma borrada nuevamente en el buzón, como se muestra en la siguiente figura:

 

 

Supongo que te gusta

Origin blog.csdn.net/xiketangAndy/article/details/107564062
Recomendado
Clasificación