好吧,让我尽量解释我在问什么
当您开始如下任务时
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;
}