C# 如何在通过SmtpClient发送电子邮件时使用http代理
我能够发送电子邮件通过以下方式与雅虎电子邮件。但我的问题是,我能不能让电脑在连接雅虎服务器时使用代理?我的意思是使用代理连接来连接yahoo smpt服务器。这可能吗?多谢各位C# 如何在通过SmtpClient发送电子邮件时使用http代理,c#,proxy,smtpclient,C#,Proxy,Smtpclient,我能够发送电子邮件通过以下方式与雅虎电子邮件。但我的问题是,我能不能让电脑在连接雅虎服务器时使用代理?我的意思是使用代理连接来连接yahoo smpt服务器。这可能吗?多谢各位 public static bool func_SendEmail(string srFrom, string srSenderEmail, string srSenderEmailPw, string srHtmlBody, string srTextBody, string srTitle, str
public static bool func_SendEmail(string srFrom, string srSenderEmail, string srSenderEmailPw,
string srHtmlBody, string srTextBody, string srTitle, string srProxy)
{
try
{
using (MailMessage message = new MailMessage(new MailAddress(srSenderEmail, srFrom), new MailAddress(srSenderEmail)))
{
message.ReplyTo = new MailAddress(srSenderEmail, srFrom);
message.IsBodyHtml = false;
message.Subject = srTitle;
message.SubjectEncoding = System.Text.Encoding.UTF8;
AlternateView textPart = AlternateView.CreateAlternateViewFromString(srTextBody, Encoding.UTF8, "text/plain");
textPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
message.AlternateViews.Add(textPart);
AlternateView htmlPart = AlternateView.CreateAlternateViewFromString(srHtmlBody, Encoding.UTF8, "text/html");
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
{
return false;
}
return true;
}
好吧,这个问题和这个不一样:
这个问题专门询问如何使用代理
另一方面,我的问题是如何使用http代理连接另一个邮件服务器来发送电子邮件
在本例中,我希望使用线程、每个线程的代理,并通过使用http代理将每个线程连接到yahoo smtp服务器以发送电子邮件
多谢各位
public static bool func_SendEmail(string srFrom, string srSenderEmail, string srSenderEmailPw,
string srHtmlBody, string srTextBody, string srTitle, string srProxy)
{
try
{
using (MailMessage message = new MailMessage(new MailAddress(srSenderEmail, srFrom), new MailAddress(srSenderEmail)))
{
message.ReplyTo = new MailAddress(srSenderEmail, srFrom);
message.IsBodyHtml = false;
message.Subject = srTitle;
message.SubjectEncoding = System.Text.Encoding.UTF8;
AlternateView textPart = AlternateView.CreateAlternateViewFromString(srTextBody, Encoding.UTF8, "text/plain");
textPart.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
message.AlternateViews.Add(textPart);
AlternateView htmlPart = AlternateView.CreateAlternateViewFromString(srHtmlBody, Encoding.UTF8, "text/html");
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
{
return false;
}
return true;
}
System.Net.GlobalProxySelection.Select = new WebProxy(address,port);
更新:
System.Net.GlobalProxySelection.Select
已被弃用
如果您使用它,您将收到警告:
此类已被弃用。请使用WebRequest.DefaultWebProxy
而是访问和设置全局默认代理。请改用“null”
GetEmptyWebProxy的
改用这个:
WebRequest.DefaultWebProxy = new WebProxy(address,port);
@劳埃德:没有。我希望软件在连接雅虎smtp服务器时使用代理。代理是什么意思?web代理将用于隐藏IP地址或帮助缓存结果,但SMTP不是这样工作的。如果你想通过另一个邮件服务器转发邮件,那么你不能将代码指向中继服务器并让中继转发所有邮件到Yahoo吗?@Lukos我是说http代理。我想使用http代理将电子邮件发送到yahoo smtp。可能是您正在寻找的答案,您将如何在多线程应用程序中使用它?好的,这在我的情况下不起作用,因为我需要使用多线程。这在.NET 4.5中被弃用,取而代之的是
WebRequest。代理
@BenCollins您能回答我的问题吗。那个尖锐的问题根本没有回答我的问题all@MonsterMMORPG我想你的问题已经回答了。顶部链接的问题与您提出的问题相同。“如何使用代理”和“如何使用http代理连接到另一个邮件服务器发送电子邮件”之间没有区别。添加线程也不会改变答案。为每个线程实例化一个新的SmtpClient
对象,或者使用一个static
实例。