为什么我尝试用c#发送邮件时会出错?
我正在尝试使用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
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
当您使用GmailSMTP
端口时
原因:
您的电子邮件没有远程访问权限。您必须配置
信息技术假设您想从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
当您使用GmailSMTP
端口时
原因:
您的电子邮件没有远程访问权限。您必须配置
信息技术假设您想从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请查看更新的答案,希望它能解决你的问题。请随时询问您是否还有任何问题。它仍然不起作用。。我想我的网络有问题哈哈哈,我不知道你的网络我对我的答案很有信心。可能发生这种情况的原因只有两个,主要是第一个,我已经给出了代码,其余的事情都取决于您如何尝试,我们不在这一边。祝你好运。谢谢你的回答!我尝试了你的代码,但错误仍然出现。。。我会尽力找出我的网络参数有什么问题谢谢你的回答!我尝试了你的代码,但错误仍然出现。。。我将尝试找出我的网络参数有什么问题