Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Как правильно прописать локальный прокси сервер для smtp?
у меня все машины ходят через прокси, как осушествить отправку почты?
WebProxy proxyObject = new WebProxy("http://192.168.1.5:8080/",true);

SmtpClient Smtp = new SmtpClient("mail.ukrpost.ua", 25);
Smtp.Credentials = new NetworkCredential("чччччч@ukrpost.ua", "******");
3 мар 09, 14:20    [6881567]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Вот нашел dll
dll
но при прописывании
SmtpClient cSmtp = new SmtpClient();

            SmtpServer oSmtp = new SmtpServer("mail.ukrpost.ua", 25);
            oSmtp.SocksProxyServer = "192.168.1.5";
            oSmtp.SocksProxyPort = 8080;
            // if your proxy doesn't requires user authentication, please don't assign any value to 
            // SocksProxyUser and SocksProxyPassword properties 
            oSmtp.SocksProxyUser = "192.168.1.7";
            //oServer.SocksProxyPassword = "pass";
            oSmtp.ProxyProtocol = SocksProxyProtocol.Http;
            //set user authentication
            oSmtp.User = "хххххххххх@ukrpost.ua";
            oSmtp.Password = "*****";

            //specifies the authentication mechanism.
            oSmtp.AuthType = SmtpAuthType.AuthAuto;
выдает ошибку о подключении к прокси.
ЛОокальный прокси Usergate
3 мар 09, 15:18    [6881960]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Вот нашел еще для смтп
Setting a global HTTP proxy in C# and .NET client classes.

To configure HTTP client classes (System.Net.WebClient, System.Xml.XmlTextReader) to use an HTTP proxy use the System.Net.GlobalProxySelection class.

Example code: 

System.Net.Uri proxyURI = new System.Net.Uri("http://64.202.165.130:3128");
System.Net.GlobalProxySelection.Select = new System.Net.WebProxy(proxyURI);

Subsequent invocations of methods that directly or indirectly make HTTP requests will route the request through the declared proxy.
но при написании
Uri proxyURI = new Uri("http://192.168.1.5:8080");
            GlobalProxySelection.Select = new WebProxy(proxyURI);

показывает сбой отправки
3 мар 09, 15:58    [6882276]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Kreol, доступ к прокси анонимный?
3 мар 09, 16:08    [6882373]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
ну в самом прокси стоит аунтефикация по IP шке.
А пароля вообще не стоит.
3 мар 09, 16:11    [6882407]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
даже при простейшем консольном приложении при прохождении прокси пишет ошибку подключения.
+
using System;
using EASendMail;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            SmtpMail oMail = new SmtpMail("TryIt");
            SmtpClient oSmtp = new SmtpClient();

            try
            {
                SmtpServer oServer = new SmtpServer("smtp.adminsystem.com");

                oServer.SocksProxyServer = "192.168.1.5";
                oServer.SocksProxyPort = 8080;
                // if your proxy doesn't requires user authentication, please don't assign any value to 
                // SocksProxyUser and SocksProxyPassword properties 
                oServer.SocksProxyUser = "tester";
                oServer.SocksProxyPassword = "pass";
                oServer.ProxyProtocol = SocksProxyProtocol.Socks5;


                //set user authentication
                //oServer.UserName = "myuser@adminsystem.com";
                //oServer.Password = "mypassword";

                //specifies the authentication mechanism.
                //oSmtp.AuthType = SmtpAuthType.AuthAuto;

                //set SSL connection
                //oServer.ConnectType = SmtpConnectType.ConnectSSLAuto;

                //set smtp server port
                //oServer.Port = 465;

                //set helo domain
                //oServer.HeloDomain = "mymachine.com";

                //set delivery-report address
                //oServer.MailFrom = "report@adminsystem.com";


                oMail.From = new MailAddress("lipovzem@ukrpost.ua");
                oMail.To.Add(new MailAddress("lipovzem@mail.ru"));
                oMail.Subject = "test subject";
                oMail.TextBody = "test body";

                oSmtp.SendMail(oServer, oMail);
                Console.WriteLine("message was sent");
                Console.ReadLine();
            }
            catch (SmtpTerminatedException exp)
            {
                Console.WriteLine(exp.Message);
                Console.ReadLine();
            }
            catch (SmtpServerException exp)
            {
                Console.WriteLine("Exception: Server Respond: {0}", exp.ErrorMessage);
                Console.ReadLine();
            }
            catch (System.Net.Sockets.SocketException exp)
            {
                Console.WriteLine("Exception: Networking Error: {0} {1}", exp.ErrorCode, exp.Message);
                Console.ReadLine();
            }
            catch (System.ComponentModel.Win32Exception exp)
            {
                Console.WriteLine("Exception: System Error: {0} {1}", exp.ErrorCode, exp.Message);
                Console.ReadLine();
            }
            catch (System.Exception exp)
            {
                Console.WriteLine("Exception: Common: {0}", exp.Message);
                Console.ReadLine();
            }
        }
    }
}
3 мар 09, 16:18    [6882458]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Kreol
ну в самом прокси стоит аунтефикация по IP шке.
А пароля вообще не стоит.


Тогда что вот это такое?
               oServer.SocksProxyUser = "tester";
               oServer.SocksProxyPassword = "pass";
3 мар 09, 16:24    [6882506]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Видимо, аутентификация по IP означает, что Ваш IP прописан в прокси и Вам ничего не нужно указывать в полях ProxyUser & ProxyPassword.
3 мар 09, 16:27    [6882525]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
да я только что поменял результат тотже
или если писать 192,168,1,7
oServer.SocksProxyUser = "OLEG";
                oServer.SocksProxyPassword = "";
3 мар 09, 16:28    [6882530]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Kreol, а я говорю НИЧЕГО не нужно писать. Вот же Вам написали
автор

// if your proxy doesn't requires user authentication, please don't assign any value to
// SocksProxyUser and SocksProxyPassword properties
3 мар 09, 16:40    [6882623]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Пишет что нет отклика
3 мар 09, 16:45    [6882655]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
выходит такая мулька.
При убирании прокси с моего компа отправляется с клиета нет, при включении не идет ни с меня ни с клиента
try
            {
                SmtpServer oServer = new SmtpServer("mail.ukrpost.ua",25);

                //oServer.SocksProxyServer = "192.168.1.5";
               // oServer.SocksProxyPort = 8080;
                // if your proxy doesn't requires user authentication, please don't assign any value to 
                // SocksProxyUser and SocksProxyPassword properties 
                //oServer.SocksProxyUser = "192.168.1.7";
                //oServer.SocksProxyPassword = "";
                //oServer.ProxyProtocol = SocksProxyProtocol.Socks5;


                //set user authentication
                oServer.User = "ххххх@ukrpost.ua";
                oServer.Password = "******";
3 мар 09, 17:00    [6882780]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Kreol, медленно:
1. Прокси есть? Есть. Значит этот факт нужно указать:
            oSmtp.SocksProxyServer = "192.168.1.5";
            oSmtp.SocksProxyPort = 8080;
2. Аутентификация есть? Есть, но по IP, то есть ни юзера ни его пароль указывать не надо.
3. Если IP клиента не прописан в прокси, то его надо прописать и тогда Ваша программа будет работать везде. Если ситуация будет различная (у одного клиента одна, у другого - другая), то надо будет делать настройки Вашей программы по использованию прокси (использовать/нет, пароль/логин юзера и надо ли их указывать).

PS Никогда не работал с прокси, хотя код в программе написан.
3 мар 09, 17:13    [6882855]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
я пробовал и так и так, выдает ошибка превышения времени ожидания сервера
3 мар 09, 17:22    [6882904]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Вот видите, Вам сервер не отвечает, а Вы на прокси грешите.
3 мар 09, 17:32    [6882982]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
так интернет же работает и если так на почту заходить то все нормально
3 мар 09, 17:57    [6883130]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Мне кажется, беседа была бы конструктивней, если бы Вы выкладывали сюда сообщения об ошибках.
Начните, с последнего.
3 мар 09, 18:14    [6883211]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
И на какой строчке возникает.
3 мар 09, 18:14    [6883214]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Exception: Networking Error: 10060 Попытка установить соединение была безуспешно
й, т.к. от другого компьютера за требуемое время не получен нужный отклик, или б
ыло разорвано уже установленное соединение из-за неверного отклика уже подключен
ного компьютера
4 мар 09, 09:55    [6884505]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
Первая часть ошибки не вызывает сомнений, что сервер просто не отвечает, а вот что означает вторая часть? Не надо ли перезагрузить сервер (ну или попробовать сделать что-нибудь еще, непример, корректно подключиться под своим логином и корректно отключиться)? Может, после Ваших экспериментов с попытками подключения, он Вас "видеть не хочет"?
4 мар 09, 10:12    [6884574]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Так при шаманстве с бубном в UserGate установил http - авторизацию и логин и пароль.
oServer.SocksProxyServer = "192.168.1.5";
                oServer.SocksProxyPort = 8080;
                // if your proxy doesn't requires user authentication, please don't assign any value to 
                // SocksProxyUser and SocksProxyPassword properties 
                oServer.SocksProxyUser = "OLEG";
                oServer.SocksProxyPassword = "1";
                oServer.ProxyProtocol = SocksProxyProtocol.Http;

сообщение ушло.
Спасибо за поддержку :)
Теперь осталось самое маленькое. Как прокси записать на простом smtp
А то тут используется спец библиотека, а ее стоимость 100 тугриков
4 мар 09, 11:57    [6885197]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
vagner
Member

Откуда:
Сообщений: 1783
А что, у простого smtp нет возможности указать прокси?
4 мар 09, 12:06    [6885262]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
ну пишу вот так
SmtpClient cSmtp = new SmtpClient("mail.ukrpost.ua", 25);
            Uri proxyURI = new Uri("http://192.168.1.5:8080");
            GlobalProxySelection.Select = new WebProxy(proxyURI);
            GlobalProxySelection.Select.Credentials = new NetworkCredential("OLEG", "1");
            //ProxyElement.UseSystemDefaultValues.True;
            cSmtp.Credentials = new NetworkCredential("хххххххх@ukrpost.ua", "ххххххх");
как указать протокол прокси? Или может что-то не так написал?
4 мар 09, 12:25    [6885393]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
Так вопрос все еще остается открыт.
Переписал как подсказали:
using System.Runtime.InteropServices;

namespace SendMail
{

    public partial class frm_Send_mail : Form
    {
        private MailMessage message_1 = new MailMessage();
        public frm_Send_mail()
        {
            InitializeComponent();
        }
        public struct Struct_INTERNET_PROXY_INFO
        {
            public int dwAccessType;
            public IntPtr proxy;
            public IntPtr proxyBypass;
        };
        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
        private void RefreshIESettings(string strProxy)
{
    const int INTERNET_OPTION_PROXY = 38;
    const int INTERNET_OPEN_TYPE_PROXY = 3;
    Struct_INTERNET_PROXY_INFO struct_IPI;
    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
    struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
    struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("192.168.1.5:8080");
    IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
    Marshal.StructureToPtr(struct_IPI, intptrStruct, true);            
    bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
    Marshal.FreeHGlobal(struct_IPI.proxy);
   Marshal.FreeHGlobal(struct_IPI.proxyBypass);
    Marshal.DestroyStructure(intptrStruct, typeof(Struct_INTERNET_PROXY_INFO));
}
        private void btn_Send_Click(object sender, EventArgs e)
        {
            
            RefreshIESettings("192.168.1.5:8080");        
            
           try
            {
                message_1.Subject = tb_Subject.Text;
                message_1.Body = tb_Body.Text;
                message_1.From = new MailAddress("xxxxxxxxx@ukrpost.ua");
                message_1.To.Add(new MailAddress(cmb_To.Text));
                SmtpClient cSmtp = new SmtpClient();
                cSmtp.Host = "mail.ukrpost.ua";
                cSmtp.Port = 25;
                cSmtp.Credentials = new NetworkCredential("xxxxxxxxx@ukrpost.ua", "********");
                cSmtp.Send(message_1);
                MessageBox.Show("Сообщение отправлено");
             }
            catch (SmtpException ex)
            {
                MessageBox.Show(ex.Message.ToString());
                MessageBox.Show(ex.InnerException.ToString());

            }
с моей опять все отправляется нормально, с клиента выдает ошибку.
Картинка с другого сайта.
Теперь не могу понять где я налажжжжал, мне же нужно указывать хост для отправления. Помогите пожалуйста!!!
10 мар 09, 12:19    [6904426]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно прописать локальный прокси сервер для smtp?  [new]
Kreol
Member

Откуда:
Сообщений: 545
добавил app.config покоментировал все до этого теперь простоя отправка, но с моей машины опять уходит с клиетской через прокси пишет ошибку что не может открыть соедениение
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <authenticationModules>
      <add type = "System.Net.DigestClient" />
      <add type = "System.Net.NegotiateClient" />
      <add type = "System.Net.KerberosClient" />
      <add type = "System.Net.NtlmClient" />
      <add type = "System.Net.BasicClient" />
    </authenticationModules>
 
    <defaultProxy>
      <proxy
        usesystemdefault = "true"
        bypassonlocal = "true"
      />
    </defaultProxy>
    <mailSettings>
      <smtp deliveryMethod="network" from="lхххххххх@ukrpost.ua">
        <network
          host="192.168.1.5"
          port="8080"
          defaultCredentials="true"
        />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
12 мар 09, 13:03    [6916222]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить