C# 交易失败。服务器响应为:SMTP主机
我一直在尝试制作一个简单的电子邮件发送应用程序,但我被这个错误阻止了,我似乎找不到任何有这个问题的人(但有点不知道该搜索什么) 因此,当我尝试发送电子邮件时出现此错误,它只会将此错误与SMTP主机的名称一起返回给我 交易失败。服务器响应为:smtp.host.com 如果我看到它崩溃的痕迹 位于System.Net.Mail.SmtpConnection.GetConnection(ServicePoint ServicePoint) 这是代码示例,没有什么特别之处C# 交易失败。服务器响应为:SMTP主机,c#,asp.net,smtpclient,C#,Asp.net,Smtpclient,我一直在尝试制作一个简单的电子邮件发送应用程序,但我被这个错误阻止了,我似乎找不到任何有这个问题的人(但有点不知道该搜索什么) 因此,当我尝试发送电子邮件时出现此错误,它只会将此错误与SMTP主机的名称一起返回给我 交易失败。服务器响应为:smtp.host.com 如果我看到它崩溃的痕迹 位于System.Net.Mail.SmtpConnection.GetConnection(ServicePoint ServicePoint) 这是代码示例,没有什么特别之处 MailMessage ma
MailMessage mail = new MailMessage();
mail.From = new MailAddress(CurrentUser.email);
mail.Subject = txtSubject.Text;
mail.Body = txtMailBody.Text;
try
{
foreach (ListItem user in lbSelectedUsr.Items)
{
mail.To.Add(new MailAddress(user.email));
}
SmtpClient mailClient = new SmtpClient("smtp.host.com");
mailClient.Send(mail);
lblResultOK.Visible = true;
}
catch(Exception ex)
{
lblResultOK.Visible = true;
}
注意,为了示例,SMTP是假的
我尝试使用无效的SMTP,但它给了我不同的错误,因此SMTP似乎正常,
我也试着把凭证放进去,同样的错误。有任何关于发生了什么的提示吗?尝试通过谷歌smtp发送,如果一切正常,则将其更改为您的smtp服务器信息。如果您这样做并且问题仍然存在,则必须检查您的smtp服务器
- 这是一个很好的起点:()
- 阅读它的教程
服务器不接受运行应用程序的计算机的中继。适当配置服务器,或在已配置为中继的计算机上运行代码(通常是域中的所有计算机;我认为您的计算机属于不同于SMTP服务器的域)。以下代码必须放在web.config中。注意点是defaultCredentials=“false”
您正在使用exchange吗?如果是这样,服务器是否设置为从运行代码的ip地址接受中继?还要确保电子邮件地址是有效的。尝试将foreach循环取出,对“to address”进行硬编码,并对address中的一个虚拟对象进行硬编码,然后查看它是否有效。这将消除作为问题的地址。您也可以尝试邮件服务器的IP地址,而不是主机名。我想我是exchange的,我被切换到了那个新项目,对此我很困惑,我会四处询问,但我记得我的计算机在连接到本地服务器时遇到了一些问题,所以这可能就是问题所在。我确实把硬编码邮件放在了“收件人”和“发件人”上,结果还是一样的。我不确定我是否能找到邮件服务器的IP地址,我们正在使用我们的internet主机的SMTP。好的,我们使用了错误的SMTP。显然,我们使用的是Bell(Sympatico),我们正在尝试使用他们的开放式SMTP服务器(不需要身份验证),该服务器应该是:smtp1.Sympatico.ca,但它给了我一个更模糊的错误。{“无法从传输连接读取数据:远程主机强制关闭了现有连接。”}听起来问题在于smtp服务器不接受发送电子邮件的请求。客户端smtp错误消息故意含糊不清。如果你想找出真正的问题是什么,而不需要花费无数的时间进行尝试和错误,你需要联系没有与你交谈的服务器的邮局主管或管理员,并让他/她检查服务器日志。如果将整个ex对象转储到异常处理程序中,您可能会得到一些额外的信息。我会检查我的SMTP。如上所述,它通过谷歌运行良好。这个问题感觉像是来自我们的SMTP。如果您的服务器有凭据,那么您应该在SmtpClient mailClient=new SmtpClient(“abc.host.com”)之后使用mailClient.NetworkCredential(“用户名”、“密码”)传递凭据;您的答案是问题中提供的代码示例的副本。如果您想包含评论中的信息,请编辑您的答案。
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="emailAddress">
<network host="smtp.gmail.com" port="587" userName="emailAddress" password="password" defaultCredentials="false"/>
</smtp>
</mailSettings>
MailMessage mail = new MailMessage();
mail.From = new MailAddress(CurrentUser.email);
mail.Subject = txtSubject.Text;
mail.Body = txtMailBody.Text;
try
{
foreach (ListItem user in lbSelectedUsr.Items)
{
mail.To.Add(new MailAddress(user.email));
}
SmtpClient mailClient = new SmtpClient("smtp.host.com");
mailClient.EnableSsl = true
mailClient.Send(mail);
lblResultOK.Visible = true;
}
catch(Exception ex)
{
lblResultKO.Visible = true;
}
<system.net>
<mailSettings>
<smtp from="aaa@yourdomain.com">
<network host="mail.yourdomain.com" userName="aaa@yourdomain.com" password="your password" port="587" defaultCredentials="false"/>
</smtp>
</mailSettings>