Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с CDO, не могу разобраться с отправкой письма 
V
    Опции темы
Ozligia
Дата 15.10.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



Код

Dim Flds as ADODB.Fields
Set Flds = iConf.Fields

With Flds
  .Item(cdoSendUsingMethod)       = cdoSendUsingPort
  .Item(cdoSMTPServer)            = "server.example.com"
  .Item(cdoSMTPConnectionTimeout) = 10 ' quick timeout
  .Item(cdoSMTPAuthenticate)      = cdoBasic

  ' IMPORTANT: Storing user names and passwords inside source code
  ' can lead to security vulnerabilities in your software. Do not
  ' store user names and passwords in your production code.
  .Item(cdoSendUserName)          = "username"
  .Item(cdoSendPassword)          = "password"

  .Item(cdoURLProxyServer)        = "server:80"
  .Item(cdoURLProxyBypass)        = "<local>"
  .Item(cdoURLGetLatestVersion)   = True
  .Update
End With

With iMsg
  Set .Configuration = iConf
      .To       = """User A"" <[email protected]>"
      .From     = """User B"" <[email protected]>"
      .Subject  = "Hows it going? I've attached my web page"
      .CreateMHTMLBody "http://example.com"
      .AddAttachment "C:\files\mybook.doc"
      .Send
End With

Dim iMsg
Set iMsg = CreateObject("CDO.Message")
Dim iConf
Set iConf = CreateObject("CDO.Configuration")

Dim Flds
Set Flds = iConf.Fields

With Flds
  ' assume constants are defined within script file
  .Item(cdoSendUsingMethod)       = 2 ' cdoSendUsingPort
  .Item(cdoSMTPServer)            = "server.example.com"
  .Item(cdoSMTPConnectionTimeout) = 10 ' quick timeout
  .Item(cdoSMTPAuthenticate)      = cdoBasic
  .Item(cdoSendUserName)          = "username"
  .Item(cdoSendPassword)          = "password"
  .Item(cdoURLProxyServer)        = "server:80"
  .Item(cdoURLProxyBypass)        = "<local>"
  .Item(cdoURLGetLatestVersion)   = True
  .Update
End With

With iMsg
  Set .Configuration = iConf
      .To       = """User A"" <[email protected]>"
      .From     = """User B"" <[email protected]>"
      .Subject  = "Hows it going? I've attached my web page"
      .CreateMHTMLBody "http://example.com"
      .AddAttachment "C:\files\mybook.doc"
      .Send
End With




Вот такой вот код, никак не могу понять почему не определяется cdoSendUsingMethod и т.д. пишет имя не объявлено, пример с msdn (visual basic express 2008) что не так? ADODB и CDO подключены... что не так ?

Это сообщение отредактировал(а) diadiavova - 15.10.2009, 18:33
PM MAIL   Вверх
diadiavova
Дата 15.10.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ozligia, во-первых, используз подсветку кода, прямо над полем ввода текста, там разберёшься.
Во-вторых вот этого
Код

Set Flds = iConf.Fields
в VB.Net просто нет. Эта конструкция осталась в 6-м бейсике smile Ты уверен, что правильно раздел выбрал? По идее компилятор на это должен ошибку выводить.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 16.10.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



Да, правильно, set не поддерживается, просто я пример скопировал со страницы msdn. Редактор просто их убирает и всё, остается просто присвоение. за подсветку кода спасибо, просто не знал, мой первый пост. Но в принципе вопрос остается тот же. Да кстати , редактор у меня VBexpress 2008, проект windows forms, т.е. VB.NET, а вот пример скорее всего 6-ой VB

Это сообщение отредактировал(а) Ozligia - 16.10.2009, 14:36
PM MAIL   Вверх
diadiavova
Дата 16.10.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



В твоём коде sendUsingMethod - это идентификатор(переменная, функция, делегат...что угодно). Будучи вырванным из контекста этот код просто не имеет смысла. Если переместить указатель отладчика на следующую строку, то вывалится та же ошибка только уже относительно cdoSMTPServer. Читай внимательнее описание этого кода в том месте, где ты его взял. Там должно быть всё написано.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 16.10.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



все построено на основе CDO (COM объект), собственно iConf также является его структурой, вот только её нельзя заполнить так как она только для чтения, во вторых компилятор считает что cdoSendUsingMethod нигде не объявлен, хотя cdoSendUsingPort, который устанавливается в качестве значения является членом этого COM объекта, версия описания этого самого объекта и примера в MSDN совпадают, просто и не знаю как быть. Совет тоже неплохой щас полезу вчитываться в каждую строку

Это сообщение отредактировал(а) Ozligia - 16.10.2009, 14:50
PM MAIL   Вверх
diadiavova
Дата 16.10.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Если он является членом, то и описывай его как член
Код

cdoSendUsingPort.cdoSendUsingMethod
Если, конечно cdoSendUsingPort является именем переменной, содержащей объект, а не именем типа.

Добавлено через 2 минуты и 6 секунд
Ты скопировал код, написанный фактически на другом языке и ждёшь, что всё сработает без изменений. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 16.10.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



вот в том то и проблема, что cdoSendUsingMethod нигде не объявлен в качестве члена объекта, его в принципе в нём нет. Значение в которое его можно установить в объекте есть, а вот в какое место это значение устанавливать непонятно.
P.S язык то другой, вот только на COM объекты расчитан на обращение из разных языков

Это сообщение отредактировал(а) Ozligia - 16.10.2009, 15:01
PM MAIL   Вверх
diadiavova
Дата 16.10.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Ozligia @  16.10.2009,  15:59 Найти цитируемый пост)
Значение в которое его можно установить в объекте есть

Эту фразу я вообще не понял. Объясни, чем в этом коде является cdoSendUsingMethod. Здесь телепатов нет. И вообще не мешало бы хотябы ссылку на топик дать откуда ты это взял.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 16.10.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



пожалуйста, вот ссылка пример с MSDN

Добавлено через 6 минут и 16 секунд
Цитата

Цитата(Ozligia @  16.10.2009,  15:59 Найти цитируемый пост)
Значение в которое его можно установить в объекте есть

Эту фразу я вообще не понял. Объясни, чем в этом коде является cdoSendUsingMethod


Честно говоря мне самому не понятно, cdoSendUsingMethod можно установить в значение cdoSendUsingPort. cdoSendUsingPort объявлен в объекте CDO. но в нем никак не могу найти упоминание про cdoSendUsingMethod, также как и в структурах этого объекта
PM MAIL   Вверх
diadiavova
Дата 16.10.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



До того, как я начал разбираться в примере ответь мне на один вопрос:
У тебя действительно есть какая-то насущная необходимость отправлять мэйля юзая ком или ты просто не знаешь о существовании класса System.Net.Mail.SmtpClient?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 16.10.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



честно говоря, толком с System.Net.Mail.SmtpClient не разбирался, нашел примеры с CDO, наверно просто потому что net платформы тогда еще не было. Никого специально разбираться в примерах заставлять не хотел, просто мало ли кто сталкивался. Хотя насколько я понял System.Net.Mail.SmtpClient тоже использует CDO в конечном счете. Буду благодарен если подскажите альтернативные способы отсылки писем.
Собственно задача такая: отправить письма по адресам из списка, адрес отправки выставляется в ручную (не тот с которого отправили), а текст письма и всё остальное это уже дело второе.
P.S. Это не прога для спама, просто необходимо уведомлять клиентов =)
PM MAIL   Вверх
diadiavova
Дата 16.10.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142





--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ozligia
Дата 19.10.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
Ozligia
Дата 20.10.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.10.2009

Репутация: нет
Всего: нет



всё работает, только вот порт 25 закрыт, оказалось нужно использовать порты 2525 или 587 (на mail.ru и yandex.ru соответственно)

Это сообщение отредактировал(а) Ozligia - 20.10.2009, 15:50
PM MAIL   Вверх
diadiavova
Дата 20.10.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ну там же есть свойство Port. Что мешает присвоить ему нужное значение?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.