C# 如何从关闭SMTP端口的安全网络发送电子邮件

C# 如何从关闭SMTP端口的安全网络发送电子邮件,c#,email,network-security,C#,Email,Network Security,我尝试使用SMTP服务器从桌面应用发送电子邮件,但我的网络是安全的,端口已关闭 那么,有没有其他方法可以像使用Gmail api那样发送电子邮件 我使用此代码,但不适用于我 public void Send_Mail(string HTMLBody, string MailTo) { MailMessage Mail = new MailMessage(); SmtpClient SmtpClient = new SmtpClient(); stri

我尝试使用SMTP服务器从桌面应用发送电子邮件,但我的网络是安全的,端口已关闭

那么,有没有其他方法可以像使用Gmail api那样发送电子邮件

我使用此代码,但不适用于我

  public void Send_Mail(string HTMLBody, string MailTo)
  {
      MailMessage Mail = new MailMessage();
      SmtpClient SmtpClient = new SmtpClient();

      string MailSubject = "Subject;
      string MailFrom = "from@xxxx.com";


      Mail.Subject = MailSubject;
      Mail.Body = HTMLBody;
      Mail.To.Add(MailTo);

      MailAddress From = new MailAddress(MailFrom);
      Mail.From = From;

      Mail.IsBodyHtml = true;

      SmtpClient.Host = "host";
      SmtpClient.Port = port;
      SmtpClient.EnableSsl = true;
      SmtpClient.Send(Mail);            
}

如果您的网络不允许到gmail使用的任何端口的出站连接(或限制特定的协议或IP等),那么您将无能为力。您必须与“网络人”交谈,为您解除此限制,或者更好的是,要求他们提供本地smtp服务器供您使用。

通常,“安全网络”意味着有防火墙,限制流量,只允许在某些端口(如端口80和8080)上进行通信


这类网络(工作场所、共享办公空间、学校等)通常有一个可供使用的传出SMTP服务器。或者,您需要使用可以通过实际打开的端口与之联系的服务器,或者通过第三方中继/隧道传输请求。

我曾在我们遇到类似问题的地方工作过。桌面计算机不允许发送电子邮件,但可以允许服务器与SMTP服务器对话

我们最终做的是编写一个windows服务来监听队列中的消息(在我们的例子中是Tibco EMS,但MSMQ也可以)。该服务从队列中获取邮件,并将其传递到SMTP服务器上。SMTP服务器被允许使用


它为系统增加了一个额外的步骤和过程,但这足以让合规部门满意。

您的安全网络难道没有SMTP服务器吗?要使用它,我的机器必须采用静态IP,并且每台机器使用此工具必须采用静态IP,这不好。我以前没有处理过windows服务,所以我无法理解它是如何从队列中读取的,这将在哪里队列。您需要一个中间件解决方案(例如Microsoft MSMQ)来承载队列。然后,该队列将可供您的桌面和服务器使用。是否每个客户端都有其队列,并且所有客户端都将与服务器联系?否,该队列由共享服务器上的MSMQ实例管理。桌面应用程序写入队列,服务器进程将退出队列。看看你的意思是队列将在服务器上,而我的应用程序和windows服务将在我的电脑上吗?