C# smtp例外情况“;发送邮件失败“;
我正在用C#.Net制作一个SMTP邮件应用程序。它在Gmail设置中工作正常,但我必须在连接到VSNL时使用它。我收到一个异常:“发送邮件失败” 我的设置似乎很完美。有什么问题?为什么我会有例外C# smtp例外情况“;发送邮件失败“;,c#,email,smtp,C#,Email,Smtp,我正在用C#.Net制作一个SMTP邮件应用程序。它在Gmail设置中工作正常,但我必须在连接到VSNL时使用它。我收到一个异常:“发送邮件失败” 我的设置似乎很完美。有什么问题?为什么我会有例外 MailMessage mailMsg = new MailMessage(); MailAddress mailAddress = new MailAddress("mail@vsnl.net"); mailMsg.To.Add(textboxsecondry.Text); mailMsg.From
MailMessage mailMsg = new MailMessage();
MailAddress mailAddress = new MailAddress("mail@vsnl.net");
mailMsg.To.Add(textboxsecondry.Text);
mailMsg.From = mailAddress;
// Subject and Body
mailMsg.Subject = "Testing mail..";
mailMsg.Body = "connection testing..";
SmtpClient smtpClient = new SmtpClient("smtp.vsnl.net", 25);
var credentials = new System.Net.NetworkCredential("mail@vsnl.net", "password");
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = credentials;
smtpClient.Send(mailMsg);
我得到一个例外如下
System.IO.IOException:无法从传输连接读取数据:网络IO连接已关闭
在System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(字节[]缓冲区、Int32偏移量、Int32读取、布尔读取行)中在System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader调用者,布尔oneLine)
在System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader调用者)
位于System.Net.Mail.SmtpConnection.GetConnection(字符串主机,Int32端口) 位于System.Net.Mail.SmtpTransport.GetConnection(字符串主机,Int32端口)
在System.Net.Mail.SmtpClient.GetConnection()上 在System.Net.Mail.SmtpClient.Send(邮件消息)上
检查异常的InnerException,应该会告诉您它失败的原因。尝试将
Send
调用包装在Try-catch块中,以帮助识别潜在问题。
e、 g
此信息将有助于确定问题所在…请尝试删除
smtpClient.EnableSsl=true;
我不确定vsnl是否支持SSL以及您正在使用的端口号请确保您的防病毒软件正在阻止发送邮件。在我的例子中,McAfee访问保护规则阻止发送邮件、取消锁定块和报告。如果没有看到您的代码,很难找到异常的原因。以下是假设: VSNL的服务器主机是smtp.VSNL.net 例外情况:
Unable to read data from the transport connection: net_io_connectionclosed
通常,只有当用户名或密码不匹配时才会发生此异常。请检查机器是否被IPv6地址引用。在我的例子中,使用机器名给了我同样的错误。使用ip4地址,它确实有效(即10.0.0.4)。我摆脱了ipv6,它开始工作了
这不是我一直在寻找的解决方案,但鉴于我对ipv6的了解有限,我不知道还有其他选择。我使用了一些解决方案,但我只在发送邮件失败时检查此选项:
default value is false;
但它不可能变成真的
smtpClient.Port = smtpServerPort;
smtpClient.UseDefaultCredentials = false;
smtpClient.Timeout = 100000;
smtpClient.Credentials = new System.Net.NetworkCredential(mailerEmailAddress, mailerPassword);
smtpClient.EnableSsl = EnableSsl;
所有功能必须由一个try-catch环绕 你能发布异常的全部内容,以及堆栈跟踪的任何相关部分吗?我的异常是抛出“发送邮件失败”。看到这个,这里有更多选项。我希望能帮助你:)需要更多的解释。如果我没有这样做的话,那可能会变得一团糟
smtpClient.Port = smtpServerPort;
smtpClient.UseDefaultCredentials = false;
smtpClient.Timeout = 100000;
smtpClient.Credentials = new System.Net.NetworkCredential(mailerEmailAddress, mailerPassword);
smtpClient.EnableSsl = EnableSsl;