繁体   English   中英

System.Net.Mail在发送时超时

[英]System.Net.Mail timing out on send

我有一些工作正常,发送电子邮件旧的代码,但视觉工作室告诉我,该代码已经过时了,我应该在改变它Net.MailWeb.Mail 我已经重写了大部分内容,但我有几个问题。

这是原始的工作代码:

public void Send(string from, string to, string subject, string body, bool isHtml, string[] attachments)
{

    var mailMessage = new MailMessage

    {
        From = from,
        To = to,
        Subject = subject,
        Body = body,
        BodyFormat = isHtml ? MailFormat.Html : MailFormat.Text
    };


    // Add attachments
    if (attachments != null)
    {
        foreach (var t in attachments)
        {
            mailMessage.Attachments.Add(new Attachment(t));
        }
    }
    mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1);
    mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", _accountName);
    mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", _password);
    mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", _port.ToString(CultureInfo.InvariantCulture)); 
    mailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", true);

    SmtpMail.SmtpServer = _smtp;
    SmtpMail.Send(mailMessage);
}

这里是重写的部分(好吧,有点):

public void Send2(string from, string to, string subject, string body, bool isHtml, string[] attachments)
{
var fromObj = new MailAddress(from);
var toObj = new MailAddress(to);


var mailMessage = new System.Net.Mail.MailMessage
                      {
                          From = fromObj,
                          Subject = subject,
                          Body = body,
                          IsBodyHtml = isHtml,
                      };

mailMessage.To.Add(toObj);

if (attachments != null)
{
    foreach(var t in attachments)
    {
        mailMessage.Attachments.Add(new Attachment(t));
    }
}

var smtp = new SmtpClient(_smtp) {Credentials = new NetworkCredential(_accountName, _password), Port = _port, EnableSsl = true};
smtp.Send(mailMessage);
}

如果您想知道,我在代码中分别设置了_port_smtp ,分别为465和smtp.gmail.com。

所以它似乎工作,但然后下到发送部分并吐出其中一个:

System.Net.Mail.SmtpException: The operation has timed out.

是否有我遗漏的东西,比如原始代码中的Fields ,导致它超时?

谢谢!

由于DavidH指向正确的方向,端口需要从465更改为587 (或25;我使用前者没有问题)。

一点点谷歌走了很长的路。 检查这个答案你的治疗 - 你使用错误的端口:

https://stackoverflow.com/a/11244548/2420979

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM