powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отправка почты из кода VBA.
25 сообщений из 42, страница 1 из 2
Отправка почты из кода VBA.
    #32075921
Pestov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть отчет, который формируется в Access и потом отправляется автоматически по почте. Установлен Outlook XP и он то зараза не дает отправить сообщение: Участок кода, ответственный за отправку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
mailsubject =  "Отчет '' на "  & CStr(Date)
Set myOlApp = CreateObject( "Outlook.Application" )
Set myItem = myOlApp.CreateItem( 0 )
Set myAttachments = myItem.Attachments
myAttachments.Add SaveName,  1 ,  1 
myItem.Recipients.Add ( "Пупкин В. И." )
myItem.Recipients.Add ( "ПланПоставок" )
myItem.Subject = mailsubject
myItem.Send


При вызове метода Send появляется окошко, что дескать, программа пытается автоматически отправить письмо от моего имени, разрешать мол или нет.

КАК ИЗБАВИТЬСЯ ОТ ЭТОЙ ХРЕНИ????

P.S. Догадываюсь, что это связано с установкой уровня безопасности в outlook'е, но блин так и не нашел, где этот уровень поменять?
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #32077560
-=Alexey=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с security update (из-за которого у тебя проблеммы) на vba через MAPI никак
далее выдержки из msdn
Item.Send
When you run a program that uses the Outlook object model to call the Send method, you receive a warning message. This warning message tells you that a program is trying to send mail on your behalf and asks if you want to allow the message to be sent. The warning message contains both a Yes and a No button; however, the Yes button is not available until five seconds have passed since the warning message appeared. You can dismiss the warning message immediately if you click No. When you click No, the Send method returns an E_FAIL error in the C or C++ programming languages.

Avoiding the Security Features
The e-mail security features affect all custom solutions that use the Outlook object model, CDO, or Simple MAPI, even if they are digitally signed. This includes the following:

Outlook custom forms that are published to any folder or forms library, including the Organizational Forms Library

Outlook COM Add-ins

Outlook Visual Basic for Applications

Any other type of development project that uses the Outlook object model, CDO or Simple MAPI

As a developer, you have various options when you try to avoid the security features. To summarize your typical options depending on where you are developing your solution:
Outlook custom forms: Publish forms so that they are not one-off forms, or use the administrator features to enable VBScript code in one-off forms to run.

Outlook Visual Basic for Applications: Use the administrator features to disable object model restrictions, or convert your Visual Basic for Applications code to a COM Add-in, and then register it by using the administrator form.

COM add-ins: COM add-ins can be trusted if an administrator registers them by using the administrator form. However, when you are using a COM add-in, only the Outlook object model is exempted; the CDO object model will still generate warnings.

You cannot trust COM add-ins in Outlook 2000. This was a feature that was added to the Outlook 2002 version of the administrator form.

Automating the Outlook or CDO object models: Use the administrator features to disable object model restrictions.

---------------------------
ссылки по теме:
http://support.microsoft.com/default.aspx?scid=kb;en-us;290500
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #32077950
Pestov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Отправка почты из кода VBA.
    #33231752
Yuriy Zaytsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле решение есть!

Есть библиотека разумеется за деньги
которая это решает!

http://www.microsoft.com/office/orkarchive/2003ddl.htm

Как это сделать сам не знаю :(
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #33232231
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuriy ZaytsevКак это сделать сам не знаю :(кака бычна - послать клавиатуру сендкиём (что всегда чревато)
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #33232244
Super Mario
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно посылать почту без использования учетной записи в Outlook-е.

Надо использовать SMTP и объект CDO.Message.

Подробнее про CDOSYS
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #33232307
еще раз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #33233164
SAS!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я для отправки данных по почте использую DoCmd.SendObject. Отправляет без всяких вопросов, но вот только подтверждения о доставке-прочтении не выдает, сволочь.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Отправка почты из кода VBA.
    #35741874
Фотография Случайная гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pestov

При вызове метода Send появляется окошко, что дескать, программа пытается автоматически отправить письмо от моего имени, разрешать мол или нет.



Хотела бы реанимировать тему... Может быть есть у кого-нибудь еще идеи.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36040708
generalmaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подсказали люди добрые с Хабаровска, сам седня столкнулся с тем же...
Вобщем есть бесплатная прога от MAPILAB, которая позволяет обойти это выскаивающее сообщение с предупреждением о возможных вирусах
http://www.mapilab.com/files/security_outlook.zip
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36040877
vladK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To generalmaximus
Интересная штука, спасибо!
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36076909
dim4j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно отличная программка!!!
Пытался использовать CDO, но были проблемы с отправкой из ящика Исходящие. Из всех ящиков отправляет. а из этого нет. Кароче нахлебался!!
Программка помогла!!Респект авторам
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36077134
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я использую програмку ClickYes, которая сама нажимет "Да" :)
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36077683
Фотография samaranches
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я вот такую функцию использую:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Public Function sendEmail(emailTo As String, emailSubject As String, emailBody As String, Optional VarDebug As Boolean) As Integer
On Error GoTo Err_sendEmail
Dim oMSG As Object
Dim oConfig As Object
Dim CFields As Object
Dim strBody As String

Set oMSG = CreateObject("CDO.Message")
Set oConfig = CreateObject("CDO.Configuration")
Set CFields = oConfig.Fields
Set oMSG.Configuration = oConfig

CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") =  2 
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.inbox.ru"
CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") =  1 
'CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "login" 'Login
CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "parol" 'password
CFields("urn:schemas:mailheader:content-language") = "windows-1251"
CFields.Update

oMSG.To = emailTo
oMSG.From = "login@inbox.ru"
oMSG.Subject = emailSubject
oMSG.BodyPart.Charset = "windows-1251"
'oMSG.AddAttachment "c:\temp\Test0.rtf"
oMSG.TextBody = emailBody
oMSG.Send

sendEmail =  1 

Exit_sendEmail:
    Set CFields = Nothing
    Set oConfig = Nothing
    Set oMSG = Nothing
    Exit Function

Err_sendEmail:
    sendEmail =  0 
    If Not IsNull(VarDebug) Then If VarDebug Then MsgBox (Err.Description)
    Resume Exit_sendEmail
End Function
Всё прекрасно работает и никаких глючных аутлуков не нужно
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36245465
АндрейКур
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samaranches,

Очень клёвая функция, спасибо!
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36245656
Фотография Quiet333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как ее запустить?
что в кнопке написать?
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36729737
generalmaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Я перед отправкой архивирую файл вложения, потом создаю письмо, прикрепляю архив, отсылаю.
На больших файлах, которые архивируются подольше, у меня управление передается к следующему оператору, не дожидаясь когда процесс архивации дойдет до 100% :(
В итоге к письму прикрепляется недоделанный архив :(
Помогите, как правильно дождаться чтобы архив до конца заархивировался???
код следующий:

'основная процедура
Private Sub s_Post_Office(AFileName As String, sBody As String, receiver As String) ', myOlApp As Variant)
Dim ans
Dim ArcName As String
Dim myItem As Variant
Dim myOlApp As Object
Const olMailItem = 0
Const olFormatPlain = 1
Const myByValue = 1
Dim StartTime2 As Date
Dim Endtime2 As Date
Dim subj As String

ArcName = "MyFile.rar"
subj = "MyFile_"
'косячит в этом месте. не дожидаясь завершения - программа прет дальше
ans = ShellExecute(Application.hwnd, "open", "C:\Program Files\WinRAR\rar.exe", "a -m5 """ & ArcName & """ """ & AFileName & """", "", SW_SHOW) ' SW_SHOW = 1

Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)

Otchety.s_WaitActive ans

On Error GoTo l1
Call Sleep(1000)

With myItem
.BodyFormat = olFormatPlain
.Body = sBody
.Subject = subj
.attachments.Add ArcName
.Recipients.Add (receiver)
.Display
.send
End With

l1:
On Error GoTo 0
End Sub

'вспомогательная процедура
Sub s_WaitActive(TaskID)
Dim hProc As Long
Dim lExitCode As Long
Dim Msg As String
Const ACCESS_TYPE = &H400
Const STILL_ACTIVE = &H103
On Error GoTo ERR
hProc = OpenProcess(ACCESS_TYPE, False, TaskID)
Application.Cursor = xlWait
Do
GetExitCodeProcess hProc, lExitCode
DoEvents
Loop While lExitCode = STILL_ACTIVE
Application.Cursor = xlDefault

EXIT_SUB:
Exit Sub

ERR:
If ERR.NUMBER <> 0 Then
Msg = "Error # " & Str(ERR.NUMBER) & " was generated by " & ERR.Source & Chr(13) & ERR.Description
MsgBox Msg, , "Error", ERR.HelpFile, ERR.HelpContext
End If
GoTo EXIT_SUB
End Sub
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36729793
Фотография Ёжик`
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
'Значения, принимаемые параметром intWindowStyle:
'0  Запуск в скрытом виде
'1  Обычный размер окна, если окно свернуто или развернуто на весь экран, то ему возвращается исходный вид и положение на экране
'2  Запуск в свернутом виде
'3  Развернутое на весь экран
'4  Запуск в обычном размере, в неактивном состоянии (без фокуса)
'8  Обычный размер в неактивном состоянии, но в фокусе остается запустившее приложение
'object.Run (strCommand, [intWindowStyle], [bWaitOnReturn])

Public Function WshRunHidenAndWait(FilePath As String)
Dim Wsh
Set Wsh = CreateObject("Wscript.Shell")
Call Wsh.Run(FilePath,  0 , True)
Set Wsh = Nothing
End Function
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #36731642
generalmaximus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёжик`,

Спасибо! Переделал свою лабуду под ваш пример!
......
Dim p1 As String
p1 = """C:\Program Files\WinRAR\rar.exe""" & " a -m5 """ & ArcName & """ """ & AFileName & """"
Set Wsh = CreateObject("Wscript.Shell")
Call Wsh.Run(p1, 1, True)
Set Wsh = Nothing
......
работает.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Отправка почты из кода VBA.
    #38489253
DmitrievAS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ку знатоки.
Полезная для меня веточка...
Но у меня затык - хочу чтобы письмо отсылалось адресату, чей адрес внесен в таблицу, в зависимости от адресата, информация будет делиться нужным образом...
Как заставить это работать пока не знаю, ниже приведена строка, которая видимо имеет ошибку синтаксиса, но не пойму какую, перепробовал разные варианты с апострофами и прочим, а может и не в этом дело...
Направте в нужную сторону плиз.

Код: vbnet
1.
.To = " " & [Parts_search].[mail] & " "
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38489307
DmitrievAS
Код: vbnet
1.
.To = " " & [Parts_search].[mail] & " "


[Parts_search].[mail] - это что? Обращение к полю в источнике формы, в модуле которой выполняется код? Тогда почему не Me![mail]?

Если же это просто обращение к полю таблицы Parts_search, то это не взлетит. Нужно так:
Код: vbnet
1.
.To = DLookup("[mail]", "[Parts_search]")
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38489308
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitrievASКу знатоки.
Полезная для меня веточка...
Но у меня затык - хочу чтобы письмо отсылалось адресату, чей адрес внесен в таблицу, в зависимости от адресата, информация будет делиться нужным образом...
Как заставить это работать пока не знаю, ниже приведена строка, которая видимо имеет ошибку синтаксиса, но не пойму какую, перепробовал разные варианты с апострофами и прочим, а может и не в этом дело...
Направте в нужную сторону плиз.

Код: vbnet
1.
.To = " " & [Parts_search].[mail] & " "


а вот эта [Parts_search] - чё ? таблица чтоле ?
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38489385
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Уберите эти " " & и & " ". Они затуманивают код и ничего не делают. И посмотрите в отладчике, какое значение у Вас получается.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38489885
DmitrievAS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч,
если убрать все кавычки и прочее - оставить только
Код: vbnet
1.
.To = [Parts_search].[mail]

, то появляется сообщение, при отладке: "приложению МА не удается найти поле "|1", указанное в выражении".

И да, [Parts_search] - это таблица, [mail] - соответственно поле с перечнем мэйл адресов, на данный момент для отладки процедуры в данной таблице всего одна запись с одним мэйл адресом.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38489926
DmitrievAS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitrievAS,
все, нашел:
Код: vbnet
1.
.To = DLookup("[mail]", "[Parts_search]")
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отправка почты из кода VBA.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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