代码之家  ›  专栏  ›  技术社区  ›  user5672248

使用FluentScheduler时,MailKit-SmtpClient发送方法第一次工作,但之后不再工作

  •  0
  • user5672248  · 技术社区  · 7 年前

    我为我的Web应用程序创建了后台任务,如果有任何问题,它会每隔15分钟向客户端发送一封电子邮件。我用Gmail发邮件。

    public virtual void Send(string body, string attachment)
        {
            message.From.Add(GetFromAddress());
            message.To.AddRange(GetToAddresses());
            message.Subject = "Error";
            message.Body = CreateBody(body, attachment);
    
            using (var SmtpClient = new SmtpClient())
            {
                try
                {
                    if (!SmtpClient.IsConnected)
                    {
                        ConnectToGmail(SmtpClient);
                    }
    
                    SmtpClient.Send(message);
                    SmtpClient.Disconnect(true);
                }
                catch (Exception ex)
                {
                    logger.Error(ex.ToString());
                }
            }
        }
    

    当我运行项目,然后第一次它得到发送方法,然后电子邮件被发送。但下一次它到达发送方法时,它就不再发送电子邮件了。没有引发异常。垃圾邮件文件夹中没有任何内容。

    1 回复  |  直到 7 年前
        1
  •  0
  •   user5672248 user5672248    7 年前

    我找到了问题的答案。我创建了一次MIMessage,然后每次都会添加到同一条消息中。现在,每次我调用send,我都会创建一条新的mimessage,现在它可以工作了。

    public virtual void Send(string body, string attachment)
        {
            var message = new MimeMessage();
            message.From.Add(GetFromAddress());
            message.To.AddRange(GetToAddresses());
            message.Subject = "Kiosk error";
            message.Body = CreateBody(body, attachment);
    
            using (var SmtpClient = new SmtpClient())
            {
                try
                {
                    if (!SmtpClient.IsConnected)
                    {
                        ConnectToGmail(SmtpClient);
                    }
    
                    SmtpClient.Send(message);
                    SmtpClient.Disconnect(true);
                }
                catch (Exception ex)
                {
                    logger.Error(ex.ToString());
                }
            }
        }