电子邮件未从C#中的smtp.zoho.com发送

时间:2019-04-04 11:27:22

标签: c# asp.net-mvc zoho

我正在使用ZOHO电子邮件服务器通过我的应用程序发送电子邮件。但是它给出了以下错误- “ SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.5.1需要身份验证。”

            MailMessage msg = new MailMessage();
            msg.To.Add(new MailAddress("xxx@xx.com"));
            msg.Bcc.Add(new MailAddress("xxx@xx.com"));
            msg.From = new MailAddress("xxx@xx.com", "Test mail");
            msg.Subject = "send mail";
            msg.Body = "test MAIL....";
            msg.IsBodyHtml = true;
            SmtpClient client = new SmtpClient();
            client.Host = "smtp.zoho.com";
            client.Credentials = new System.Net.NetworkCredential("xx@xx.com", "XXX");
            client.Port = 587;
            client.EnableSsl = true;
            client.Send(msg);

1 个答案:

答案 0 :(得分:0)

您可以尝试zoho mail API https://www.zoho.com/mail/help/api/

我在旧项目中使用了它。

虽然速度慢但可以解决问题:

private static void SendMail()
{
    const string WEBSERVICE_URL = "https://mail.zoho.com/api/accounts/{id}/messages";
    try
    {
        var webRequest = System.Net.WebRequest.Create(WEBSERVICE_URL);
        if (webRequest != null)
        {
            webRequest.Method = "POST";
            webRequest.Headers.Add("Authorization", "{token}}");
            webRequest.ContentType = "application/json";

            using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
            {
                string json = "{\"fromAddress\": \"{email}}\"," +
                                "\"toAddress\": \"{email}}\"," +
                                "\"subject\": \"subject\"," +
                                "\"content\": \"content\"}";

                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

            var httpResponse = (HttpWebResponse)webRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Console.WriteLine(String.Format("Response: {0}", result));
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }