Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Gmail通过C#发送电子邮件_C#_Smtp_Gmail_Smtpclient - Fatal编程技术网

如何通过Gmail通过C#发送电子邮件

如何通过Gmail通过C#发送电子邮件,c#,smtp,gmail,smtpclient,C#,Smtp,Gmail,Smtpclient,尝试通过web服务发送电子邮件时出错。我尝试过启用对不太安全的应用程序的访问,禁用两步验证并通过web浏览器登录帐户。没有一个解决方案对我有效。我仍然得到: 错误:System.Net.Mail.SmtpException:SMTP服务器需要 安全连接或客户端未通过身份验证。服务器 答复是:需要5.5.1身份验证 如何解决此问题 namespace EmailService { public class Service1 : IService1 { pub

尝试通过web服务发送电子邮件时出错。我尝试过启用对不太安全的应用程序的访问,禁用两步验证并通过web浏览器登录帐户。没有一个解决方案对我有效。我仍然得到:

错误:System.Net.Mail.SmtpException:SMTP服务器需要 安全连接或客户端未通过身份验证。服务器 答复是:需要5.5.1身份验证

如何解决此问题

namespace EmailService
{
    public class Service1 : IService1
    {    
        public string SendEmail(string inputEmail, string subject, string body)
        {
            string returnString = "";
            try
            {
                MailMessage email = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";

                // set up the Gmail server
                smtp.EnableSsl = true;
                smtp.Port = 587;
                smtp.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "mypassword");
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = false;

                // draft the email
                MailAddress fromAddress = new MailAddress("cse445emailservice@gmail.com");
                email.From = fromAddress;
                email.To.Add(inputEmail);
                email.Subject = body;
                email.Body = body;

                smtp.Send(email);

                returnString = "Success! Please check your e-mail.";
            }
            catch(Exception ex)
            {
                returnString = "Error: " + ex.ToString();
            }
            return returnString;
        }
    }
}
只需转到此处:,使用您的电子邮件和密码登录即可,该密码用于以c代码发送邮件,然后选择
打开

另外,请转到此链接并单击继续

我还对它进行了一些编辑:

public string sendit(string ReciverMail)
{
    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("YourMail@gmail.com");
    msg.To.Add(ReciverMail);
    msg.Subject = "Hello world! " + DateTime.Now.ToString();
    msg.Body = "hi to you ... :)";
    SmtpClient client = new SmtpClient();
    client.UseDefaultCredentials = true;
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword");
    client.Timeout = 20000;
    try
    {
       client.Send(msg);
        return "Mail has been successfully sent!";
    }
    catch (Exception ex)
    {
        return "Fail Has error" + ex.Message;
    }
    finally
    {
       msg.Dispose();
    }
}
如果上述代码不起作用,请尝试按以下代码进行更改:

    SmtpClient client = new SmtpClient();
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new NetworkCredential("YourMail@gmail.com", "YourPassword");

看看这是否有帮助:你有没有尝试ping服务器,如果有,那么Eghbal Sohrabi提到的解决方案是ok@Shubhojitping谷歌服务器?@Johnny,我的意思是说你的防火墙是否没有阻止请求,这种情况有时会发生。只是想确定一下……为什么我可以在本地主机上成功运行类似的代码,但在web服务器上运行时会出现此错误?我已经尝试了这两种方法,但仍然不起作用。结果是
smtp.UseDefaultCredentials=false必须在
smtp.Credentials=new System.Net.NetworkCredential(“myemail@gmail.com“,“我的密码”)我只是简单地交换了这些行,一切正常。您的意思是更改
smtp.UseDefaultCredentials=true
to
smtp.UseDefaultCredentials=false并将其放置在
smtp.Credentials=new System.Net.NetworkCredential(“myemail@gmail.com“,“我的密码”)如果是,请告诉我编辑我的答案。是的,我认为默认凭据必须为false,并且该行必须在另一行之前。我已经尝试了数小时,我所要做的就是单击“继续”按钮!非常感谢你,你是生活的享受