如何使用Exchange服务器通过代理服务器发送邮件

时间:2014-08-13 14:07:05

标签: c# .net

我的代码如下:

        MailMessage mail = new MailMessage();
        mail.To.Add("******");
        mail.CC.Add("*****");
        mail.From = new MailAddress("*******");
        mail.Subject = "Salesforce Credential for ";
        mail.SubjectEncoding = Encoding.UTF8;

        string Body = "<html><head></head><body>Hi,<br> Project Name:&nbsp;"
        + " <br> Username &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp; "
        + " <br> Password &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp; "
        + " <br> Security&nbsp;Token &nbsp;&nbsp;&nbsp;&nbsp;:&nbsp; ";
        mail.Body = Body;
        mail.BodyEncoding = Encoding.UTF8;
        mail.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "webmail.***************.**.**";
        string uid = "***********";
        string pwd = "*********";
        smtp.Credentials = new System.Net.NetworkCredential(uid, pwd);
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

        ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

       // without this I get: The remote certificate is invalid according to the validation procedure.

        smtp.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(@"********"));
        //Or your Smtp Email ID and Password
        smtp.EnableSsl = true;
        smtp.Send(mail);

但我收到了这个错误:

  

连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败

1 个答案:

答案 0 :(得分:0)

您使用SMTP而非HTTP发送此邮件。 SMTP通常不使用代理,而是使用中继。我怀疑基于您的代码的根本问题是webmail.whateaver.xx.yy是交换Web服务端点,它不具备也不能配置为公开公开SMTP端口。您需要与控制该系统的任何人一起工作,并找出适当的访问方式。

如果他们无法公开SMTP - 这很有可能,如果你来,我会嘲笑你的脸并要求我这样做 - 你可能需要找到一个备用的出站SMTP选项或使用Exchange Web Services发送邮件。请参阅nuget了解EWS客户端库。

最后,在我发言的同时,请全世界帮忙,不要发送密码。