Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
C# 使用ABV.BG拥有的SMTP服务器发送邮件返回超时异常?_C#_Email_Smtp_Smtpclient - Fatal编程技术网

C# 使用ABV.BG拥有的SMTP服务器发送邮件返回超时异常?

C# 使用ABV.BG拥有的SMTP服务器发送邮件返回超时异常?,c#,email,smtp,smtpclient,C#,Email,Smtp,Smtpclient,为什么示例不起作用?甚至可以 我安装Outlook只是为了测试SMTP服务器。一切都好。我能够收发邮件。 问题在于C代码。它总是返回超时异常。即使我将Timeout设置为max int SMTP服务器端口正常,因为使用Outlook客户端时没有任何问题。只需查看顶部的链接即可查看SMT服务器的配置。从同一网络使用相同的选项 public void SendAbvBg(string message) { var Smtp = new SmtpClient("smtp.abv.bg

为什么示例不起作用?甚至可以

我安装Outlook只是为了测试SMTP服务器。一切都好。我能够收发邮件。
问题在于C代码。它总是返回超时异常。即使我将Timeout设置为max int

SMTP服务器端口正常,因为使用Outlook客户端时没有任何问题。只需查看顶部的链接即可查看SMT服务器的配置。从同一网络使用相同的选项

public void SendAbvBg(string message)
{
    var Smtp = new SmtpClient("smtp.abv.bg", 465); 
    Smtp.UseDefaultCredentials = false;          
    Smtp.EnableSsl = true;
    Smtp.Timeout = 80000;
    Smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    Smtp.Credentials = new System.Net.NetworkCredential("mail@abv.bg", "pass");
    
    MailMessage msg = new MailMessage();
    msg.Body = message;
    msg.From = new MailAddress("mail@abv.bg", "name");
    msg.To.Add("mail@abv.bg");
    msg.HeadersEncoding = Encoding.UTF8;
    msg.BodyEncoding = Encoding.UTF8;
    msg.IsBodyHtml = true;
    msg.Subject = "Form";
    msg.SubjectEncoding = Encoding.UTF8;

    msg.Headers.Add("MIME-Version", "1.0");
    msg.Headers.Add("Content-Language", "en-us");

    try
    {
        Smtp.Send(message);               
    }
    catch(Exception e)
    {
        // timeout exception
    }   
}
这怎么可能?标准Outlook pop/smtp工作。密码-不!为什么? 除此之外,Outlook配置超时为2分钟

我尝试了5分钟
Timeout=300000
,但仍然收到错误: Message=“操作已超时。

SMT服务器归ABV.BG所有。这是一个非常旧的UNIX smtp服务器。 客户端代码和Outlook客户端位于同一办公公司网络中。网络不限制任何端口或策略。Outlook可以完美地使用与代码示例相同的配置和选项。这证明问题与网络、防火墙或任何其他限制无关。这是代码中的错误

这可能是默认TargetName=“SMTPSVC/smtp.abv.bg”的问题吗?

GMAIL还可以,它不是当前主题的一部分。

测试自

我创建了一个类来测试SMTP访问。使用数据调用
SmtpSeverProbe(…)
方法进行简单测试。您将在成功时收到电子邮件。将测试正常端口25465587将测试SSL

使用系统;
使用System.IO;
Net系统;
使用System.Net.Security;
使用System.Net.Sockets;
使用系统文本;
命名空间CommonCore.Tests
{
//基于:
// https://gist.github.com/xamlmonkey/4737291
//正常端口25文本、465 SSL、587文本然后启动TSSL
/// 
///用于测试对SMTP服务器的访问。
/// 
公共静态类SmtpTests
{
静态int连接超时=1300;
/// 
///测试中继,尝试发送带有或不带StartSSl的电子邮件端口25,带有SSL的端口465,带有StartSSl的端口587。
///返回恢复日志,但您有一个包含详细信息的“out string Log”变量。
/// 
/// 
/// 
///要测试SSL,请使用服务器证书中存在的名称,对于SSL,请避免使用IP
///接受所有格式:…@…或“…@…”。。。。
///正文中的信息
///非常详细的日志
///只有错误日志
/// 
/// 
公共静态字符串SmtpServerProbe(字符串登录、字符串密码、字符串服务器、,
字符串收件人、字符串消息、输出字符串日志、输出字符串错误、字符串发件人=null)
{
//正常端口25文本、465 SSL、587文本然后启动TSSL
字符串resume=“”;
错误=”;
log=Environment.NewLine;
字符串_resume=“”;
字符串_error=“”;
国际港口;
布尔力;
from=from???“测试电子邮件”;
bool_sendok=false;
System.Net.Mail.MailAddress addr=null;
尝试
{
addr=新系统.Net.Mail.MailAddress(发件人);
}
抓住
{
error=“'from'电子邮件地址不正确。”;
日志+=”!!错误:“+错误;
resume=Environment.NewLine+$“[FAIL]”from“格式不正确>'{from}'”+Environment.NewLine;
返回简历;
}
尝试
{
addr=新系统.Net.Mail.MailAddress(收件人);
}
抓住
{
error=“'to'电子邮件地址不正确。”;
日志+=”!!错误:“+错误;
resume=Environment.NewLine+$“[FAIL]”到“格式不正确>'{to}'”+Environment.NewLine;
返回简历;
}
//测试继电器
端口=25;
forceSsl=false;
log+=“--------------------------------------”+Environment.NewLine+
“测试继电器”+环境.NewLine+
“(用户未通过身份验证,电子邮件发送至”test@gmail.com“)”+Environment.NewLine;
_sendok=Tests.SmtpTests.scanstp(“,”,服务器,端口,强制SSL,“\”测试电子邮件\“”,“test@gmail.com“,“继电器测试”,输出字符串日志,输出恢复,输出错误);
如果(_sendok)
{
resume+=“服务器正在接受非常糟糕的中继”;
resume+=Environment.NewLine+$”(可能它对此主机或IP“{System.Net.Dns.GetHostName()}”有异常);
log+=\u log+Environment.NewLine;
log+=“---------------------------------------“+Environment.NewLine+”服务器正在接受非常糟糕的中继”+Environment.NewLine+Environment.NewLine;
}
其他的
{
log+=“---------------------------------------“+Environment.NewLine+”服务器未接受中继,这很好。“+Environment.NewLine+Environment.NewLine;
}
//测试SMTPS
端口=465;
forceSsl=true;
log+=Environment.NewLine+“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu+
$“测试端口{port}/force SSL={forceSsl}”;
_sendok=Tests.SmtpTests.scanstp(登录名、密码、服务器、端口、强制SSL、发件人、收件人、消息、退出日志、退出恢复、退出错误);
log+=\u log;
error+=Environment.NewLine+\u错误;
resume+=\u resume;
//使用STARTSSL测试SMTP
端口=25;
forceSsl=false;
log+=Environment.NewLine+“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu+
$“测试端口{port}/try STARTSSL=true”;
_sendok=Tests.SmtpTests.scanstp(登录名、密码、服务