0

好吧,让我尽量解释我在问什么

当您开始如下任务时

    Task.Factory.StartNew(() =>
     {
         myFunction();
     });

我希望里面myFunction的所有网络操作都使用http proxy. 这可能吗 ?

可以为httpwebrequest类使用代理,但例如当我使用 yahoo smtp 发送邮件时,我无法使用任何代理。

所以想像在这个里面,总是无论如何都使用这个代理来进行所有的网络操作

C# 4.5

好的,这就是我使用 yahoo smtp 发送电子邮件的方式。现在 yahoo smtp 本身就是一个代理。但在这种情况下,我想在连接 yahoo smtp 时使用另一个代理(http web 代理)。

这可能吗 ?

 public static bool func_SendEmail(string srFrom, string srSenderEmail, string srSenderEmailPw,
        string srHtmlBody, string srTextBody, string srTitle, string srProxy, string srSentToEmail)
    {
        try
        {
            using (MailMessage message = new MailMessage(new MailAddress(srSenderEmail, srFrom), new MailAddress(srSentToEmail)))
            using (AlternateView textPart = AlternateView.CreateAlternateViewFromString(srTextBody, Encoding.UTF8, "text/plain"))
            using (AlternateView htmlPart = AlternateView.CreateAlternateViewFromString(srHtmlBody, Encoding.UTF8, "text/html"))
            {
                message.ReplyTo = new MailAddress(srSenderEmail, srFrom);
                message.IsBodyHtml = false;
                message.Subject = srTitle;
                message.SubjectEncoding = System.Text.Encoding.UTF8;
                textPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
                message.AlternateViews.Add(textPart);
                htmlPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
                message.AlternateViews.Add(htmlPart);
                message.BodyEncoding = Encoding.UTF8;
                using (SmtpClient oSmtp = new SmtpClient())
                {

                    oSmtp.Host = "smtp.mail.yahoo.com";
                    oSmtp.Credentials = new NetworkCredential(srSenderEmail, srSenderEmailPw);
                    oSmtp.EnableSsl = false;
                    oSmtp.Port = 587;
                    oSmtp.Send(message);
                }
            }
        }
        catch (Exception E)
        {
            lock (swErrors)
            {
                swErrors.WriteLine(E.Message.ToString());
                if (E.InnerException != null)
                {
                    swErrors.WriteLine(E.InnerException.ToString());
                }
                swErrors.WriteLine("");
            }
            return false;
        }
        return true;
    }
4

0 回答 0