Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Требую совета или о Workbook.SendMail всерьез / 25 сообщений из 38, страница 1 из 2
12.02.2010, 10:16
    #36464966
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Имеем следующее

Головной офис
60 филиалов

В каждом филиале есть клиент написанный на VBA основная цель которого, заполнение некоего файла и отправка этого файла в головной офис.

Суть клиента - форма с полями и ограничениями заполнятся, по нажатию кнопки "отправить почтой" создает новую книгу, записывает туда массив данных и методом Sendmail отсылает это в офис.

На ряде клиентов мы натолкнулись на ошибку в этом методе. Субъективно полагаю что проблема в версиях ОС и Excel на клиентах. Т.е. как минимум ясно, что ОС у них Win2000.

Ещё умею писать письма через CDO, но проблема в том, что отправка через CDO означает настройку клиента локально. А имя почтовых серверов на филиале не имеет правил. А клиент программится централизовано.

Внимание вопрос: чем заменить SendMail или как написать самописный SendMail не сильно привязанный к фичам, а больше к стандартным средствам.

Да и вообще какие будут иные варианты без ломания всего и замены на веб клиенты.
...
Рейтинг: 0 / 0
12.02.2010, 10:25
    #36464994
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Shamanus,
Через Outlook, который есть в любой Windows
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim objOL As Outlook.Application, objMail As MailItem
Set objOL = New Outlook.Application
Set objMail = objOL.CreateItem(olMailItem)
With objMail
    .To = "mm@mm.ru; dd@dd.ru" ' адрес, можно несколько
    .Subject = "Это тема письма"
    .Body  = "Это текст письма"
    .Display ' показать окно письма
    .Send ' отправить автоматом
End With
Set objMail = Nothing
Set objOL = Nothing
...
Рейтинг: 0 / 0
12.02.2010, 10:27
    #36465002
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
.Михаил.,
к сожалению наш корпоративный стандарт Mozilla ThunderBird

поэтому есть опасения, что аутлук просто не настроен.
...
Рейтинг: 0 / 0
12.02.2010, 10:48
    #36465088
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
нашел вот такой код
Код: plaintext
1.
2.
3.
4.
Public Declare Function ShellExecute& Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long)
Sub SendMail()
    Call ShellExecute( 0 &, "Open", "mailto:" & "address@mail.ru" & "?Subject=" & "Это тема письма" & "&Body=" & "Это текст в теле письма", "", "",  1 )
End Sub


создает сообщение почтовой системы. В принципе могло бы устроить если бы цепляла attach
как вложение подключить не могу нагуглить

вот такое не прокатывает
Код: plaintext
    Call ShellExecute( 0 &, "Open", "mailto:" & "address@mail.ru" & "?Subject=" & "Это тема письма" & "&Body=" & "Это текст в теле письма" & "&Attach=" & "E:\1.xls", "", "",  1 )
...
Рейтинг: 0 / 0
12.02.2010, 11:23
    #36465213
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Aaoi?: Shamanus

К сожалению через так не цепляется
тоже хотел задействовать как вариант отсылки отчета об ошибке, но к сожалению только текст. и то всплывают проблемы,
когда текст приготовлен в ворде, положен в Memo-поле, прочитан из него и подставлен в body. Чувствителен к символам
разделителям. Вообщем использую кое-как

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 11:38
    #36465289
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос,

вот засада.

я уже копал в сторону поиска настроек Thunderbird
у него там в папке есть файлик signons.txt в нем явно есть имя SMTP и учетки.

Проблема в том, что найти эту папку на винте. Это можно сделать через реестр. В общем рою явно не туда. Чем сложнее система тем менее надежна.

Нужно подумать как Excel 2000 научить методу sendmail.
...
Рейтинг: 0 / 0
12.02.2010, 11:53
    #36465332
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> Нужно подумать как Excel 2000 научить методу sendmail.

может возьмеш сторонную програмку корторая умеет только отправлять почту? И научиш Ексель отправлять через неё?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 12:02
    #36465365
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос,

стороннюю прогу тоже нужно учить параметрам сервера
а excel пользует какой то ключик реестра который ему подсказывает через какого почтового клиента надо делать пункт меню "Отправить как вложение"
...
Рейтинг: 0 / 0
12.02.2010, 12:11
    #36465393
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> а excel пользует какой то ключик реестра который ему подсказывает через какого почтового клиента надо делать
> пункт меню "Отправить как вложение"

Ексель это делает через почтового клиента по умолчанию, правда у меня был Оутлук Експрес, потом я перешёл на Оутлук, как
только я сделал почтовым клиентом по умолчанию Оутлук, отправка из програм стала происходить через него.
Настраивается это в ИЕ меню Сервис->Свойства Обозревателя->Закладка Программы

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 13:24
    #36465674
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос
Ексель это делает через почтового клиента по умолчанию, правда у меня был Оутлук Експрес, потом я перешёл на Оутлук, как
только я сделал почтовым клиентом по умолчанию Оутлук, отправка из програм стала происходить через него.
Настраивается это в ИЕ меню Сервис->Свойства Обозревателя->Закладка Программы


Ну собственно видимо таким образом этот ключик в реестре и меняется. Я сейчас попробовал у себя переустановить на аутлук с thunderbird -а. По началу прошло, но excel во вкладках все равно выбирал последнего. После рестарта все вернулось на круги своя в настройках IE в т.ч.
в общем не суть...

Таким получается, что мне нужно найти прогу, которая умеет через Почтовик по умолчанию посылать письма с attach-ами и рассылать её вместе с клиентами. А с учетом моих требований, чтобы она ещё умела это делать через командную строку по образу и подобию ShellExecute.
А т.к. клиент мой обновляется периодически и его вообщето рекомендовано запускать из сообщения почтового, то получается нужно будет разослать юзерам этот файл и попросить их сохранить в определенной директории.

Всего то осталось найти такую программу. :)

Я даже незнаю с каким запросом подступиться к гуглу...
Ну буду пробовать.
...
Рейтинг: 0 / 0
12.02.2010, 13:55
    #36465782
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> Всего то осталось найти такую программу. :)

Ы ?

> Я даже незнаю с каким запросом подступиться к гуглу...

Да
так и пиши



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 14:00
    #36465810
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> После рестарта все вернулось на круги своя в настройках IE в т.ч.

Делал так ?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 14:02
    #36465820
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Ну и до кучи

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 14:09
    #36465850
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос
> Автор: Shamanus
> После рестарта все вернулось на круги своя в настройках IE в т.ч.

Делал так ?



так делал.

А вообще за подсказки спасибо
Чето реально не подумал что почтовику можно будет просто задать командную строку
Спасибо Игорь
...
Рейтинг: 0 / 0
12.02.2010, 14:10
    #36465854
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
ShamanusТаким получается, что мне нужно найти прогу, которая умеет через Почтовик по умолчанию посылать письма с attach-ами и рассылать её вместе с клиентами. А с учетом моих требований, чтобы она ещё умела это делать через командную строку по образу и подобию ShellExecute.
Такой программы нет.

ShamanusА имя почтовых серверов на филиале не имеет правил.А этот набор слов не имеет смысла. Что вы хотели этим сказать?

ShamanusSendMail или как написать самописный SendMail не сильно привязанный к фичам, а больше к стандартным средствам.Стандартное средство — сервер в интернете со службой SMTP и открытым релеем для ip филиалов + CDO. Оно совсем не зависит от разброса системных параметров клиентов. То же, что хотите сделать вы — костыли из ваты.

Либо пусть все используют одинаковую версию офиса.


Jah loves you.
...
Рейтинг: 0 / 0
12.02.2010, 14:24
    #36465909
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
AntonariyShamanusТаким получается, что мне нужно найти прогу, которая умеет через Почтовик по умолчанию посылать письма с attach-ами и рассылать её вместе с клиентами. А с учетом моих требований, чтобы она ещё умела это делать через командную строку по образу и подобию ShellExecute.
Такой программы нет.

я поступаю так:
Код: plaintext
1.
Shell("""c:\program files\the bat!\thebat.exe"" /MAILT=""" + App.Path + _
"\files\tb.tmp"";USER=""МойЯщик""" + IIf(immed, ";SEND", ""))
...
Рейтинг: 0 / 0
12.02.2010, 14:27
    #36465923
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Antonariy А этот набор слов не имеет смысла. Что вы хотели этим сказать?
Поясняю. На филиале имеется несколько почтовых серверов. С разными именами/адресами. К какому именно из почтовых серверов подключен юзер пользующий клиента неизвестно. Т.е. дать настройки CDO из клиента нельзя т.к. CDO просит адрес SMTP сервера получится его придется "УГАДАТЬ". Если Вы знаете как отправить письмо через CDO не используя настроек SMTP, то расскажите это и будет решением проблемы.

Antonariy То же, что хотите сделать вы — костыли из ваты. Либо пусть все используют одинаковую версию офиса.

заставить всех перейти на одну версию Excel или ещё того круче

Antonariy сервер в интернете со службой SMTP и открытым релеем для ip филиалов + CDO

во первых сродни войне с ветряными мельницами, в данном случае Вы предлагаете победить ветер
во вторых я не уверен что служба информационной безопасности одобрила бы такой подход
в третьих отложит интеграцию проекта на несколько месяцев.

Компания собирается перейти на систему более адекватного обмена и уже приобрела что нужно, но срок внедрения 1,5- 2 года
поэтому пока приходится реализовать все как я сказал - как Вы их называете "костылями", как мы "залепами" т.к. работа стоять не может. Тем более что я уверен - задача имеет более простое решение.


Antonariyя поступаю так:Shocker.Pro
сейчас попробую применить этот метод к Thunderbird
...
Рейтинг: 0 / 0
12.02.2010, 15:13
    #36466117
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Shocker.Pro, Игорь Горбонос

спасибо, сработал вот такой код

Sub SendEMail()
Dim FullStr As String
FullStr = "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
FullStr = FullStr & " -compose to=""mymail@mail.ru"""
FullStr = FullStr & " ,subject=""Письмецо"""
FullStr = FullStr & " ,body=""Письмище"""
FullStr = FullStr & " ,attachment=""file:///E:/123.xls"""

Shell FullStr, 1

End Sub


Сначала диром проверяю существование thunderbird.exe если не нахожу то предлагаю выбрать ручками через диалог

Игорь отдельное спасибо
...
Рейтинг: 0 / 0
12.02.2010, 15:21
    #36466152
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> Сначала диром проверяю существование thunderbird.exe если не нахожу то предлагаю выбрать ручками через диалог

Посмотри ещё, на предмет установки переменной окружения, по которой можно найти этот твой трахтенберг
Код: plaintext
1.
2.
3.
4.
5.
Sub sd()
Dim i As Long
For i =  1  To  30  '255
Debug.Print Environ(i)
Next i
End Sub


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 15:28
    #36466174
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос,

Не
там нет, да и зачем почтовик указывать в переменных окружения?
...
Рейтинг: 0 / 0
12.02.2010, 15:34
    #36466186
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus
> там нет, да и зачем почтовик указывать в переменных окружения?

Потому что это на винде привыкли в реестр лазить за каждым чихом, а thunderbird есть и не на винде, где целеуказания
идут из конфигов, переменных окружения и т.п. мест :)
Поэтому я подумал, что может и быть такое

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 15:37
    #36466194
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
В общем для истории если кому надо вдруг будет

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub SendEMail(PathMoz, adres, subjm, bodym, atm As String)
Dim FullStr As String

' удостоверяемся что есть thunderbird
If Dir(PathMoz) = "" Then PathMoz = GetFileName  ' функция GetFileName работает с диалогом и предлагает найти местоположение thunderbird
    If PathMoz = "" Or Dir(PathMoz) <> "thunderbird.exe" Then
        MsgBox "Не найдена почтовая программа"
        Exit Sub
    End If

' Набиваем код командной строки
FullStr = PathMoz ' путь к клиенту
FullStr = FullStr & " -compose to=""" & adres & """" '  адрес, адреса
FullStr = FullStr & " ,subject=""" & subjm & """"   ' тема
FullStr = FullStr & " ,body=""" & bodym & """" ' тело
atm = Replace(atm, "\", "/", , , vbTextCompare) ' инверсируем знаки \ на / для thunderbird версий 2.0 и более иначе получим ярлык
FullStr = FullStr & " ,attachment=""file:///" & atm & """" ' прицепляем attach
Shell FullStr,  1   ' собственно выполняем
End Sub


Sub DoIT()
Call SendEMail("C:\Program Files\Mozilla Thunderbird\thunderbird.exe", "My@mail.ru", "Лист", "Лист", "E:\1\123.xls")
End Sub

а так тема закрыта
...
Рейтинг: 0 / 0
12.02.2010, 15:40
    #36466205
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
> Автор: Shamanus

Я придерусь

> Sub SendEMail(PathMoz, adres, subjm, bodym, atm As String)

Почему тип указал только для atm, а все остальные оставил Variant'ом?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.02.2010, 15:41
    #36466207
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
ShamanusПоясняю. На филиале имеется несколько почтовых серверов. С разными именами/адресами.Значит сервер у вас уже есть и не один, полдела сделано. :)
Shamanus К какому именно из почтовых серверов подключен юзер пользующий клиента неизвестно.Для CDO это абсолютно не важно, можно указать любой, на котором включен релей. Отправка письма на адрес user@domen.ru происходит так: SMTP-сервер, к которому обратилось CDO, запрашивает у DNS-сервера, обслуживающего домен @domen.ru, MX-запись, которая является адресом почтового сервера, который обслуживает почтовый адрес user@domen.ru. И SMTP-сервер посылает письмо этому серверу, а клиент его забирает. Все.

Jah loves you.
...
Рейтинг: 0 / 0
12.02.2010, 15:41
    #36466208
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требую совета или о Workbook.SendMail всерьез
Игорь Горбонос,

ну должны же на меня разработчики за что то плеваться :)
А по существу у меня там только string вот и не обратил внимания.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Требую совета или о Workbook.SendMail всерьез / 25 сообщений из 38, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]