{"id":1704,"date":"2011-02-15T14:33:05","date_gmt":"2011-02-15T12:33:05","guid":{"rendered":"http:\/\/www.limilabs.com\/blog\/?p=1704"},"modified":"2013-06-26T09:39:44","modified_gmt":"2013-06-26T07:39:44","slug":"imap-pop3-smtp-via-http-socks-proxy","status":"publish","type":"post","link":"https:\/\/www.limilabs.com\/blog\/imap-pop3-smtp-via-http-socks-proxy","title":{"rendered":"Imap, Pop3 or Smtp via HTTP or SOCKS proxy"},"content":{"rendered":"<p>Mail.dll (<a href=\"\/mail\">IMAP, POP3 and SMTP component for .NET<\/a>) supports following proxy protocols:<\/p>\n<ul>\n<li><strong>HTTP<\/strong><\/li>\n<li><strong>SOCKS5<\/strong><\/li>\n<li>SOCKS4a<\/li>\n<li>SOCKS4<\/li>\n<\/ul>\n<p>As a prerequisite you need to <strong>add reference<\/strong> to <strong>Mail.dll<\/strong> and <strong>Proxy.dll<\/strong> libraries in your project. You can find both assemblies in the <a href=\"\/mail\/download\">Mail.dll .NET email component download package<\/a>. You can also find both assemblies on the .NET tab in Visual Studio&#8217;s &#8220;Add reference&#8221; dialog after installation.<\/p>\n<p>Following sample uses HTTP proxy to access IMAP server:<\/p>\n<ol>\n<li>First it creates proxy with specified type (ProxyType), proxy address and port using proxy factory<\/li>\n<li>Then it connects to IMAP, POP3 or SMTP server via proxy and creates a socket<\/li>\n<li>Finally it attaches socket to IMAP, POP3 or SMTP client <\/li>\n<\/ol>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\/\/ C# version\r\n\r\nProxyFactory factory = new ProxyFactory();\r\nIProxyClient proxy = factory.CreateProxy(ProxyType.Http, &quot;221.3.154.9&quot;, 80);\r\n\r\nSocket socket = proxy.Connect(&quot;imap.example.org&quot;, Imap.DefaultPort);\r\n\r\nusing (Imap imap = new Imap())\r\n{\r\n    imap.Attach(socket);\r\n\r\n    \/\/ regular imap code\r\n\r\n    imap.Close();\r\n}\r\n\r\n<\/pre>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n' VB.NET version\r\n\r\nDim factory As New ProxyFactory()\r\nDim proxy As IProxyClient = factory.CreateProxy(ProxyType.Http, &quot;221.3.154.9&quot;, 80)\r\n\r\nDim socket As Socket = proxy.Connect(&quot;imap.example.org&quot;, Imap.DefaultPort)\r\n\r\nUsing imap As New Imap()\r\n   imap.Attach(socket)\r\n\r\n   ' regular imap code\r\n\r\n   imap.Close()\r\nEnd Using\r\n<\/pre>\n<p>Following sample uses HTTP proxy to access <strong>IMAP server over SSL connection<\/strong>. Note that we need to pass IMAP server name again to <strong>AttachSSL <\/strong> method for SSL authentication.  Please also note that <strong>Imap.DefaultSSLPort<\/strong> constant is used.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n\/\/ C# version\r\n\r\nProxyFactory factory = new ProxyFactory();\r\nIProxyClient proxy = factory.CreateProxy(\r\n   ProxyType.Http, &quot;221.3.154.9&quot;, 80);\r\n\r\nSocket socket = proxy.Connect(&quot;imap.gmail.com&quot;, Imap.DefaultSSLPort);\r\n\r\nusing (Imap imap = new Imap())\r\n{\r\n    imap.AttachSSL(socket, &quot;imap.gmail.com&quot;);\r\n\r\n    \/\/ regular imap code\r\n\r\n    imap.Close();\r\n}\r\n\r\n<\/pre>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n' VB.NET version\r\n\r\nDim factory As New ProxyFactory()\r\nDim proxy As IProxyClient = factory.CreateProxy( _\r\n   ProxyType.Http, &quot;221.3.154.9&quot;, 80)\r\n\r\nDim socket As Socket = proxy.Connect(&quot;imap.gmail.com&quot;, Imap.DefaultSSLPort)\r\n\r\nUsing imap As New Imap()\r\n   imap.AttachSSL(socket, &quot;imap.gmail.com&quot;)\r\n\r\n   ' regular imap code\r\n\r\n   imap.Close()\r\nEnd Using\r\n<\/pre>\n<p><strong>The same code works for Smtp and Pop3 clients:<\/strong> you only need to use different port (<em>Smtp.DefaultPort<\/em>, <em>Smtp.DefaultSSLPort<\/em>, <em>Pop3.DefaultPort<\/em>, <em>Pop3.DefaultSSLPort<\/em> or any other port your server uses) when creating the proxy, and create appropriate client in &#8216;using&#8217; line.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mail.dll (IMAP, POP3 and SMTP component for .NET) supports following proxy protocols: HTTP SOCKS5 SOCKS4a SOCKS4 As a prerequisite you need to add reference to Mail.dll and Proxy.dll libraries in your project. You can find both assemblies in the Mail.dll .NET email component download package. You can also find both assemblies on the .NET tab [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[15,45,28,42,50,75,53,57],"class_list":["post-1704","post","type-post","status-publish","format-standard","hentry","category-mail-dll","tag-c","tag-http-proxy","tag-imap","tag-pop3","tag-smtp","tag-socks","tag-ssl","tag-vb-net"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/posts\/1704"}],"collection":[{"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/comments?post=1704"}],"version-history":[{"count":11,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/posts\/1704\/revisions"}],"predecessor-version":[{"id":4134,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/posts\/1704\/revisions\/4134"}],"wp:attachment":[{"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/media?parent=1704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/categories?post=1704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.limilabs.com\/blog\/wp-json\/wp\/v2\/tags?post=1704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}