我写了一个应用程序,通过电子邮件向人们发送通知 . 出于测试目的,我使用Gmails SMTP服务器 . 使用下面的代码我测试但我随机得到以下错误 .

我在587端口使用smtp.gmail.com

System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at    
   at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)    
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)    
   at System.Net.Mail.SmtpClient.Send(MailMessage message)    
   at EmailAlertService.Email.sendMail(String subject, String body, String[] recipients, String from, String& error)

大约五分之一的电子邮件会产生此异常 . 我正在使用相同的凭据和来自地址组合的每个测试 . 任何想法,如果它正在做什么或是Gmails服务器投掷合适!

public bool sendMail(string subject, string body, string[] recipients, string from, ref string error)
    {            
        bool success = recipients != null && recipients.Length > 0;

        if (success)
        {
            SmtpClient smtpClient = new SmtpClient
            {
                Host = hostName,
                Port = port,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new System.Net.NetworkCredential(username, password)
            };


            using (MailMessage gMessage = new MailMessage(from, recipients[0], subject, body))
            {
                Console.WriteLine(recipients[0]);
                for (int i = 1; i < recipients.Length; i++) 
                {
                    Console.WriteLine(recipients[i]);
                    gMessage.To.Add(recipients[i]);
                }

                try
                {
                    smtpClient.Send(gMessage);
                    success = true;
                    error = string.Empty;
                }
                catch (Exception ex)
                {
                    success = false;
                    error = ex.ToString();

                }
            }
        }
        else
            error = "No destination email addresses supplied";

        return success;
    }