验证要求错误,smtp

本文关键字:smtp 错误 验证 | 更新日期: 2023-09-27 18:10:24

这是我下面的完整代码,请需要帮助,我一直试图通过gmail发送电子邮件,我得到这个错误"530-5.5.1身份验证需要",异常发生在这一行称为" send()"的方法中:(见下面的完整代码),我不使用c#库出于某种原因,所以我需要得到这个工作,谢谢。

 //EXCEPTION OCCURS HERE, SEE THE SEND METHOD BELOW FOR FULL CODE
  foreach (string address in to)
        {
            try
            {
                message = "RCPT TO:<" + address + ">'r'n";
                response = ReadLine();
                SendCommand(message);
                Console.WriteLine(response);
                if (response.Substring(0, 3) != "250")
                {
                    throw new SmtpException(response);
                }
            }
        }
   //CONSTRUCTOR
    public Smtp()
    {
        Port =465 ;
        Host = "smtp.gmail.com";
        Email = "email@gmail.com";
        Password = "xxxxxxx";
        to = new List<String>() { "reciever@gmail.com"};
        from = "sender@gmail.com";
    }
  //FULLE CODE
  public void Connect()
    {
        if (Client == null)
            Client = new TcpClient();
        if (!Client.Connected)
            Client.Connect(Host, Port);
        //if (IsSecure)
        //{
            SslStream secureStream =
              new SslStream(Client.GetStream());
            secureStream.AuthenticateAsClient(Host);
            ClientStream = secureStream;
            secureStream = null;
            Console.WriteLine("secure");
        //}
        //else
        //{
        //    ClientStream = Client.GetStream();
        //    Console.WriteLine("non secure");
        //}
        Writer = new StreamWriter(ClientStream);
        Reader = new StreamReader(ClientStream);
       string c= ReadLine();
       Console.WriteLine(c);
      string  message = "EHLO me";
       SendCommand(message);
       string response = ReadLine();
       Console.WriteLine(response);
       if (response.Substring(0, 3) != "250")
       {
         //  throw new SmtpException(response);
       }
       Send();
    }

   // public void 
    public void Send()
    {
        string message = "MAIL FROM:<" + Email + ">";
        SendCommand(message);
        string response = ReadLine();
        Console.WriteLine(response);
        if (response.Substring(0, 3) != "250")
        {
            throw new SmtpException(response);
        }
        string x = ReadLine();
        Console.WriteLine(x);
        **//EXCEPTION OCCURS HERE**
        foreach (string address in to)
        {
            try
            {
                message = "RCPT TO:<" + address + ">'r'n";
                response = ReadLine();
                SendCommand(message);
                Console.WriteLine(response);
                if (response.Substring(0, 3) != "250")
                {
                    throw new SmtpException(response);
                }
            }
            catch (SmtpException e)
            {
                System.Console.WriteLine("{ 0}", e.Message);
            }
        }
        message = "DATA'r'n";
        SendCommand(message);
        response = ReadLine();
        Console.WriteLine(response);
        if (response.Substring(0, 3) != "354")
        {
            throw new SmtpException(response);
        }
        message = "Subject: " + subject + "'r'n";
        foreach (string address in to)
        {
            message += "To: " + address + "'r'n";
        }
        foreach (string address in cc)
        {
            message += "Cc: " + address + "'r'n";
        }
        message += "From: " + from + "'r'n";
        if (bodyHtml.Length > 0)
        {
            message += "MIME-Version: 1.0'r'n"
                + " Content-Type: text/ html;'r'n"
                + " charset='" iso-8859-1'"'r'n";
            message += "'r'n" + bodyHtml;
        }
        else
        {
            message += "'r'n" + bodyText;
        };
        message += "'r'n.'r'n";
        SendCommand(message);
        response = ReadLine();
        Console.WriteLine(response);
        if (response.Substring(0, 3) != "250")
        {
            throw new SmtpException(response);
        }
        message = "QUIT'r'n";
        SendCommand(message);
        response = ReadLine();
        Console.WriteLine(response);
        if (response.IndexOf(" 221") == -1)
        {
            throw new SmtpException(response);
        }
    }
    public void Close()
    {
        if (Client != null)
        {
            if (Client.Connected)
                Logout();
            Client.Close();
            Client = null;
        }
        if (ClientStream != null)
        {
            ClientStream.Close();
            ClientStream = null;
        }
        if (Writer != null)
        {
            Writer.Close();
            Writer = null;
        }
        if (Reader != null)
        {
            Reader.Close();
            Reader = null;
        }
        disposed = true;
    }
    public void Dispose()
    {
        if (!disposed)
            Close();
    }
    protected void Login()
    {
        if (!IsResponseOk(SendCommand("USER " + Email)) ||
          !IsResponseOk(SendCommand("PASS " + Password)))
            throw new Exception("User/password not accepted");
    }
    protected void Logout()
    {
        SendCommand("RSET");
        //SendCommand("QUIT");
    }
    protected string SendCommand(string cmdtext)
    {
        Writer.WriteLine(cmdtext);
        Writer.Flush();
        return ReadLine();
    }
    protected string ReadLine()
    {
        return Reader.ReadLine() + "'r'n";
    }
    protected string ReadLines()
    {
        StringBuilder b = new StringBuilder();
        while (true)
        {
            string temp = ReadLine();
            if (temp == ".'r'n" || temp.IndexOf("-ERR") != -1)
                break;
            b.Append(temp);
        }
        return b.ToString();
    }
    protected static bool IsResponseOk(string response)
    {
        if (response.StartsWith("+OK"))
            return true;
        if (response.StartsWith("-ERR"))
            return false;
        throw new Exception("Cannot understand server response: " +
          response);
    }

验证要求错误,smtp

显然,SMTP服务器在接受邮件发送之前需要进行身份验证。这很常见,因为垃圾邮件发送者和骗子过去常常使用"开放中继"来兜售他们的商品。

检查服务器的规则,看看它们将接受什么样的身份验证。