Visual basic 2008 программная отправка email через proxy

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

DrKillJoy
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 56
Зарегистрирован: 10.04.2011 (Вс) 10:06

Visual basic 2008 программная отправка email через proxy

Сообщение DrKillJoy » 01.04.2013 (Пн) 6:29

Пытаюсь отправить письмо из программы. Но никак не получается. Много примеров перебрал, но так и не нашел с применением прокси. Может кто поделиться примером, или хотя бы скажет, где указывать прокси. Буду очень признателен!

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Visual basic 2008 программная отправка email через proxy

Сообщение FireFenix » 01.04.2013 (Пн) 12:11

Прокси бывает разных типов, ты определись какой у тебя

P.S. В этом разделе указывать версию студии не обязательно, а вот версию .NET фреймворка не мешало бы
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 01.04.2013 (Пн) 12:27

FireFenix писал(а):Прокси бывает разных типов, ты определись какой у тебя

А что, разные прокси в разных местах настраиваются?

FireFenix писал(а):P.S. В этом разделе указывать версию студии не обязательно, а вот версию .NET фреймворка не мешало бы

90%, что они одинаковые. И вообще, по-моему, если явно не указано иное, то надо считать что они однозначно определяют друг друга.
К тому же, написано VB 2008, что в большей степени означает версию языка, чем версию среды. А это весьма близко к версии .NET.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Visual basic 2008 программная отправка email через proxy

Сообщение FireFenix » 01.04.2013 (Пн) 14:58

Qwertiy писал(а):90%, что они одинаковые. И вообще, по-моему, если явно не указано иное, то надо считать что они однозначно определяют друг друга.
К тому же, написано VB 2008, что в большей степени означает версию языка, чем версию среды. А это весьма близко к версии .NET.

а разница 2003 среда или 2008 среда? если на улице вышла VS2013
более того есть хардкорные люди которые под VS2013 кодят для .NET FW4

Qwertiy писал(а):А что, разные прокси в разных местах настраиваются?

А причём тут настройка и разные типы прокси?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DrKillJoy
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 56
Зарегистрирован: 10.04.2011 (Вс) 10:06

Re: Visual basic 2008 программная отправка email через proxy

Сообщение DrKillJoy » 01.04.2013 (Пн) 15:47

Прокси бывает разных типов, ты определись какой у тебя

У меня http прокси.
P.S. В этом разделе указывать версию студии не обязательно, а вот версию .NET фреймворка не мешало бы

Теперь буду знать.) Фреймворк 3.5.

Использую вот этот код, для отправки письма. Без прокси все работает, а вот с прокси... Как его вручную указать?
Код: Выделить всё
Private Sub SendMailUsingGMAIL(ByVal fromAddress As String, ByVal toAddress As String, ByVal tocc As String, ByVal mailsubject As String, ByVal msgContent As String, ByVal strAttachment As String, ByVal isBodyHTML As Boolean)
        Dim retvar As Integer = 0

        Try
            Dim mailMessage As MailMessage = New MailMessage(New MailAddress(fromAddress), New MailAddress(toAddress))
            mailMessage.Subject = mailsubject
            mailMessage.IsBodyHtml = isBodyHTML
            mailMessage.Body = msgContent
            If (tocc <> "") Then
                mailMessage.CC.Add(tocc)
            End If

            Dim networkCredentials As System.Net.NetworkCredential = New System.Net.NetworkCredential("myMail@gmail.com", "mypass")
            Dim smtpClient As SmtpClient = New SmtpClient()
            smtpClient.EnableSsl = True
            smtpClient.UseDefaultCredentials = False
            smtpClient.Credentials = networkCredentials
            smtpClient.Host = "smtp.gmail.com"
            smtpClient.Port = 587
            smtpClient.Send(mailMessage)

        Catch e As Exception
            retvar = -1
            Console.WriteLine("{0} Exception caught.", e)
        End Try
        Return
    End Sub

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 01.04.2013 (Пн) 16:40

FireFenix писал(а):а разница 2003 среда или 2008 среда? если на улице вышла VS2013

Ну во-первых, 2012, а не 2013. А во-вторых, язык != среда.

FireFenix писал(а):более того есть хардкорные люди которые под VS2013 кодят для .NET FW4

Ну так вот они и должны это указывать. А все остальные не должны указывать, что версия .NET'а соответствует версии языка и среды.

FireFenix писал(а):А причём тут настройка и разные типы прокси?

Так ты же сам спросил. И я не понимаю, как тип прокси влияет на твой ответ.
Более того, я почти уверен, что версия .NET'а на него тоже не влияет.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Visual basic 2008 программная отправка email через proxy

Сообщение FireFenix » 02.04.2013 (Вт) 0:10

Qwertiy писал(а):Ну во-первых, 2012, а не 2013. А во-вторых, язык != среда.

Qwertiy писал(а):Более того, я почти уверен, что версия .NET'а на него тоже не влияет.

Если внимательно прочитать, как я ответил
FireFenix писал(а):P.S. В этом разделе указывать версию студии не обязательно, а вот версию .NET фреймворка не мешало бы

то очевидно, что я имел ввиду совет по указанию данных о проекте

Qwertiy писал(а):Так ты же сам спросил. И я не понимаю, как тип прокси влияет на твой ответ.

Я не спрашивал про настройку...
"Конечно тип прокси никак не влияет на данную тему" Изображение
Это же очевидно, что для разных протоколов нужны разные прокси. Изображение Тема ведь про проксирование Изображение

Qwertiy писал(а):И я не понимаю, как тип прокси влияет на твой ответ.

А почему ты должен понимать мою методику помощи человеку? Это же не тема разбора алгоритмов, методик и телепатической связи экстрасенсов
Более того, я тоже не понимаю, как твой хоть один ответ поможет ТС, хоть бы 1 предложение по теме в помощь ТСу.


DrKillJoy писал(а):У меня http прокси.

Это же очевидно - судя по коду, ты используешь SMTP протокол, а SMTP не совместимо с протоколом HTTP-proxy.
Тебе нужно либо прямой SMTP-proxy (или IMAP если работает твой сервер с ним) либо, SOCKS'ы.
По умолчанию в .NET класс только для HTTP-proxy, для других - в интернете большое множество платных и бесплатных библиотек
Последний раз редактировалось FireFenix 02.04.2013 (Вт) 10:13, всего редактировалось 1 раз.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DrKillJoy
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 56
Зарегистрирован: 10.04.2011 (Вс) 10:06

Re: Visual basic 2008 программная отправка email через proxy

Сообщение DrKillJoy » 02.04.2013 (Вт) 5:25

Это же очевидно - судя по коду, ты используешь SMTP протокол, а SMTP не совместимо с протоколом HTTP-proxy.
Тебе нужно либо прямой SMTP-proxy (или POP3 если работает твой сервер с ним) либо, SOCKS'ы.
По умолчанию в .NET класс только для HTTP-proxy, для других - в интернете большое множество платных и бесплатных библиотек

Опять придется велосипед изобретать.( То одно не подходит, то другое. И так каждый раз! А мне то надо просто письмо отправлять, что программа отработала правильно. Всего-то. Ладно, и на этом спасибо. Буду думать дальше.

* * * *
Если через http работать, то как я понимаю, нужно использовать get и post? Если да, то можно хоть небольшой пример. Уж очень я долго с этим разбираюсь.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.04.2013 (Вт) 6:36

FireFenix, Ты меня совсем запутал.
FireFenix, DrKillJoy, в интернете полне примеров применения именно http-прокси для отправки почты. В том числе на сайте Microsoft. В основном они основаны либо на установке глобального прокси для приложения, либо на использовании платной библиотеки. Может, стоит попробовать их использовать?

DrKillJoy
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 56
Зарегистрирован: 10.04.2011 (Вс) 10:06

Re: Visual basic 2008 программная отправка email через proxy

Сообщение DrKillJoy » 02.04.2013 (Вт) 7:05

в интернете полне примеров применения именно http-прокси для отправки почты. В том числе на сайте Microsoft. В основном они основаны либо на установке глобального прокси для приложения, либо на использовании платной библиотеки. Может, стоит попробовать их использовать?

Если не сложно, то скинь ссылку. А то я уже второй день бьюсь над этим. Может я просто не то смотрю?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 02.04.2013 (Вт) 11:27

DrKillJoy писал(а):Если не сложно, то скинь ссылку. А то я уже второй день бьюсь над этим. Может я просто не то смотрю?

Вот 5 разных подходов:
Ничего из этого не пробовал, так что ссылки без комментариев :)
Я бы в первую очередь поэксперементировал с GlobalProxySelection, затем WinApi.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Visual basic 2008 программная отправка email через proxy

Сообщение FireFenix » 02.04.2013 (Вт) 12:17

Qwertiy писал(а):FireFenix, Ты меня совсем запутал.

Ты недостаточно упорот Изображение

DrKillJoy писал(а):Если через http работать, то как я понимаю, нужно использовать get и post? Если да, то можно хоть небольшой пример. Уж очень я долго с этим разбираюсь.

Нет.

Http и Smtp протоколы это протоколы прикладного уровня, т.е. находятся на одном уровне и не совместимы
Http запрос содержит в себе заголовок с параметрами (среди которых метод GET/POST/etc) и "тело ответа"
Smtp запросы это отдельные текстовые сообщения с определённой структурой
И единственное исключение когда соединение по протоколу Http можно использоваться для передачи RAW запроса Smtp, только когда Http-Proxy не проводит валидацию заголовков (нормальные http-proxy это делают), но это грязно и плохо.

DrKillJoy писал(а):Если не сложно, то скинь ссылку. А то я уже второй день бьюсь над этим

Суть проблемы - стандартный класс SmtpClient на прямую не поддерживает прокси, кроме как прямого Smtp редиректа
Решение:
1) Найти специальные библиотеки заточенные под использование Почты + Прокси
типа:
http://visualstudiogallery.msdn.microso ... bb7d5607a8
http://www.limilabs.com/blog/imap-pop3- ... ocks-proxy
2) Человек немного разбирающийся в программировании, может найти отдельно библиотеку работы с прокси, и тогда ему останется - либо найти класс? который может сформировать запрос для прокси-библиотеки, либо написать его самому.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DrKillJoy
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 56
Зарегистрирован: 10.04.2011 (Вс) 10:06

Re: Visual basic 2008 программная отправка email через proxy

Сообщение DrKillJoy » 03.04.2013 (Ср) 6:21

:( Как же я устал от этих прокси... Все ссылки перебрал, ни одна не заработала( Я еще тот ламер, по части программирования сетевых приложений. Каждый раз, чтобы я не делал: "System.Net.Mail.SmtpException: Сбой при отправке сообщения электронной почты. ---> System.Net.WebException: Невозможно соединиться с удаленным сервером"

kanut
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 24.03.2013 (Вс) 12:10

Re: Visual basic 2008 программная отправка email через proxy

Сообщение kanut » 04.04.2013 (Чт) 18:09

Помню когда-то я пытался отправлять файлы, используя Framework и у меня тоже постоянно вылетали непонятные ошибки. Тогда я стал указывать все данные прямо в адресе сервера, примерно так:
Код: Выделить всё
Dim Server As String = "ftp://" & LoginServera & ":" & ParolServera & "@" & Server & "/" & FaylDlyaOtpravki



Может стоит пошаманить в этом направлении?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 04.04.2013 (Чт) 19:17

kanut писал(а):Может стоит пошаманить в этом направлении?

А при чём тут imap?

kanut
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 24.03.2013 (Вс) 12:10

Re: Visual basic 2008 программная отправка email через proxy

Сообщение kanut » 04.04.2013 (Чт) 20:31

Qwertiy писал(а):imap

Так может не в imap дело? Человек пишет, что возникает ошибка "Невозможно соединиться с удаленным сервером", такая же была у меня и я решил проблему таким способом. Когда я указывал логины, пароли и т.д. средствами Framework, то отправка не работала, а так заработала.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 04.04.2013 (Чт) 20:49

Я думал, что только ftp позволяет так указывать логин и пароль. Или я не прав?

kanut
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 24.03.2013 (Вс) 12:10

Re: Visual basic 2008 программная отправка email через proxy

Сообщение kanut » 05.04.2013 (Пт) 9:23

Qwertiy писал(а):Или я не прав?


Не знаю. Когда-то вроде я так заходил на какую-то почту просто через сайт, так что скорее всего не только ftp. Но это вообще не важно - я указал, что могут быть непонятные проблемы в Framework при указывании данных для соединения стандартным способом и их нужно как-то обходить. А там кто знает, почему у него не соединяется с сервером, может он просто использует левые прокси и т.д.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList