为什么我尝试用c#发送邮件时会出错?

为什么我尝试用c#发送邮件时会出错?,c#,winforms,email,C#,Winforms,Email,我正在尝试使用C#发送电子邮件,但我经常遇到以下错误: . 你能解释一下我的代码有什么问题吗 这是: SmtpClient client = new SmtpClient("smtp.gmail.com"); client.Port = 587; client.EnableSsl = true; client.Timeout = 100000; client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMetho

我正在尝试使用C#发送电子邮件,但我经常遇到以下错误:

.

你能解释一下我的代码有什么问题吗

这是:

SmtpClient client = new SmtpClient("smtp.gmail.com");  


client.Port = 587;
client.EnableSsl = true;
client.Timeout = 100000;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("myEmailAdress@gmail.com", "myPassword");  


MailMessage msg = new MailMessage();
msg.To.Add("receiver@gmail.com");
msg.From = new MailAddress("sender@gmail.com");
msg.Subject = "My subject";
msg.Body = "My body";  

client.Send(msg);  

MessageBox.Show("Message sent !");

这段代码适用于gmail,它与您的代码非常相似,只是略有不同,但如果您尝试了这段代码,但它不适用于您,问题不在于代码-可能是您需要首先解决的其他网络相关问题:

            using (var msg = new MailMessage())
            {
                msg.From = new MailAddress("fromaddress@gmail.com");
                msg.To.Add("toaddress@gmail.com");
                msg.Subject = subject;
                msg.Body = body;
                msg.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    smtp.Host = "smtp.gmail.com";
                    smtp.Port = 587;
                    smtp.EnableSsl = true;
                    smtp.Credentials = new NetworkCredential("xxx@gmail.com","password");

                    smtp.Send(msg);
                }

            }

这段代码适用于gmail,它与您的代码非常相似,只是略有不同,但如果您尝试了这段代码,但它不适用于您,问题不在于代码-可能是您需要首先解决的其他网络相关问题:

            using (var msg = new MailMessage())
            {
                msg.From = new MailAddress("fromaddress@gmail.com");
                msg.To.Add("toaddress@gmail.com");
                msg.Subject = subject;
                msg.Body = body;
                msg.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    smtp.Host = "smtp.gmail.com";
                    smtp.Port = 587;
                    smtp.EnableSsl = true;
                    smtp.Credentials = new NetworkCredential("xxx@gmail.com","password");

                    smtp.Send(msg);
                }

            }

我以前也遇到过同样的情况

您出现此错误是因为您没有为
sender@gmail.com
当您使用Gmail
SMTP
端口时

原因:

您的电子邮件没有远程访问权限。您必须配置 信息技术假设您想从
sender@gmail.com
所以你 已为此帐户设置权限
NO

如何设置

你可以试试下面的方法

或者可以直接从此链接打开该选项卡

更新:

根据你的评论,这是给你的,从我的职业生涯开始,它就一直工作得很好

public object SendMail(string fromEmail, string toEmail, string mailSubject, string mailBody, string senderName, string senderPass, string attacmmentLocationPath)
        {
            try
            {
                MailMessage mail = new MailMessage();
                //Must be change before using 
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

                mail.From = new MailAddress(fromEmail);
                mail.To.Add(toEmail);
                mail.Subject = mailSubject;
                mail.Body = mailBody;
                mail.IsBodyHtml = true;
               // mail.Attachments.Add(new Attachment(@attacmmentLocationPath));

                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential(senderName, senderPass);
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);

                return true;
            }
            catch (Exception ex)
            {

                return ex;
            }
        }

希望这会有所帮助。

我以前也遇到过同样的情况

您出现此错误是因为您没有为
sender@gmail.com
当您使用Gmail
SMTP
端口时

原因:

您的电子邮件没有远程访问权限。您必须配置 信息技术假设您想从
sender@gmail.com
所以你 已为此帐户设置权限
NO

如何设置

你可以试试下面的方法

或者可以直接从此链接打开该选项卡

更新:

根据你的评论,这是给你的,从我的职业生涯开始,它就一直工作得很好

public object SendMail(string fromEmail, string toEmail, string mailSubject, string mailBody, string senderName, string senderPass, string attacmmentLocationPath)
        {
            try
            {
                MailMessage mail = new MailMessage();
                //Must be change before using 
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

                mail.From = new MailAddress(fromEmail);
                mail.To.Add(toEmail);
                mail.Subject = mailSubject;
                mail.Body = mailBody;
                mail.IsBodyHtml = true;
               // mail.Attachments.Add(new Attachment(@attacmmentLocationPath));

                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential(senderName, senderPass);
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);

                return true;
            }
            catch (Exception ex)
            {

                return ex;
            }
        }


希望这会有所帮助。

SMTP客户端可以使用SMTP服务器支持的身份验证机制登录。

SMTP客户端可以使用SMTP服务器支持的身份验证机制登录。

是否尝试运行代码并查看哪一行失败?是的,但我没有发现任何问题。错误表明第80行(client.Send(msg))有问题,但我想这不是真正的问题,因为电子邮件地址和凭据必须来自同一个帐户。GMail在凭据和发件人不匹配时拒绝电子邮件,以防止黑客欺骗电子邮件,使电子邮件看起来像来自其他来源。@jdweng我在回答中也提到过这一点。我这样做有两个常见的原因。@Md Farid Uddin Kiron:你说的和我说的不一样,特别是对于新手来说。你试过运行代码并查看哪一行失败了吗?是的,但我没有看到任何错误。错误表明第80行(client.Send(msg))有问题,但我想这不是真正的问题,因为电子邮件地址和凭据必须来自同一个帐户。GMail在凭据和发件人不匹配时拒绝电子邮件,以防止黑客欺骗电子邮件,使电子邮件看起来像来自其他来源。@jdweng我在回答中也提到过这一点。我这样做有两个常见原因。@Md Farid Uddin Kiron:你说的和我说的不一样,特别是对于新手来说。谢谢你的回答,但我已经尝试过了,但仍然不起作用:/Hello请查看更新的答案,希望它能解决你的问题。请随时询问您是否还有任何问题。它仍然不起作用。。我想我的网络有问题哈哈哈,我不知道你的网络我对我的答案很有信心。可能发生这种情况的原因只有两个,主要是第一个,我已经给出了代码,其余的事情都取决于您如何尝试,我们不在这一边。祝你好运。谢谢你的回答,但我已经尝试过了,但仍然不起作用:/Hello请查看更新的答案,希望它能解决你的问题。请随时询问您是否还有任何问题。它仍然不起作用。。我想我的网络有问题哈哈哈,我不知道你的网络我对我的答案很有信心。可能发生这种情况的原因只有两个,主要是第一个,我已经给出了代码,其余的事情都取决于您如何尝试,我们不在这一边。祝你好运。谢谢你的回答!我尝试了你的代码,但错误仍然出现。。。我会尽力找出我的网络参数有什么问题谢谢你的回答!我尝试了你的代码,但错误仍然出现。。。我将尝试找出我的网络参数有什么问题