首页 > 解决方案 > 电子邮件未在 c# 中从 smtp.zoho.com 发送

问题描述

我正在使用 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);

标签: c#asp.net-mvczoho

解决方案


你可以试试 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());
    }


推荐阅读