powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отправка почты из кода VBA.
42 сообщений из 42, показаны все 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
Отправка почты из кода VBA.
    #38489940
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitrievASвсе, нашел:
Код: vbnet
1.
.To = DLookup("[mail]", "[Parts_search]")


нуу, это ненадолго :)

DmitrievAS...
И да, [Parts_search] - это таблица, [mail] - соответственно поле с перечнем мэйл адресов, на данный момент для отладки процедуры в данной таблице всего одна запись с одним мэйл адресом.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38490050
полином
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot qwerty112]
нуу, это ненадолго :)[/quotъ]

:) :) :)
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38584932
Treason
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Понимаю, что тема старая и заезженная, но ответа найти так и не смогла.
К сути: был код, взятый отсюда, который успешно работал со следующими параметрами на majordomo.ru

CFields(" http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.17.69" '"smtp"
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 5025
CFields(" http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@....ru" 'Login
CFields(" http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****" 'пароль
CFields("urn:schemas:mailheader:content-language") = "windows-1251"

но вот не задача, переехали мы на Mail.ru
При внесении соответствующих изменений параметров, письма не уходят, выдает иероглифы (вложение). Пару раз выдавал 550 ошибку, но честно воспроизвести ее не могу. Проштудировав интернет, наткнулась на пост
Barloneа с чего вы взяли, что почта адресату на mail.ru шлется через smtp.mail.ru ?

mail.ru MX preference = 10, mail exchanger = mxs.mail.ru
mxs.mail.ru internet address = 194.67.23.20
smtp.mail.ru internet address = 194.67.23.111

сервер для входящей почты другой :)
пробовала рекомендации, не помогло

CFields(" http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpserver") = "194.67.23.111" ' "smtp.mail.ru/mxs.mail.ru/194.67.23.20/194.67.23.111"
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
CFields(" http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'CFields(" http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
CFields(" http://schemas.microsoft.com/cdo/configuration/sendusername") = "okdoc@.....ru" 'Login
CFields(" http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*****" 'пароль
CFields("urn:schemas:mailheader:content-language") = "windows-1251"

Помогите, пожалуйста!!!
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38584949
Treason
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С Mail.ru

Для настройки почтовых программ вам понадобится следующая информация:

Ваш электронный адрес (имя почтового ящика/e-mail address) — это полное название вашего почтового ящика, включая логин, значок «@» собачки и домен (например, vash_pomoshnik@mail.ru).

Сервер входящей почты IMAP-сервер — imap.mail.ru
POP3-сервер — pop.mail.ru;

Сервер исходящей почты (SMTP-сервер) — smtp.mail.ru;

Имя пользователя — это полное название вашего почтового ящика, включая логин, значок «@» собачки и домен (например, vash_pomoshnik@mail.ru);

Пароль — текущий пароль, который вы используете для входа в почтовый ящик;

Порт — IMAP — 143 (протокол шифрования STARTTLS) или 993 (протокол шифрования SSL/TLS)
POP3 — 995 (протокол шифрования SSL/TLS)
SMTP — 465 (протокол шифрования SSL/TLS).

Аутентификация — Обычный пароль (без шифрования).
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38584990
ILLHEAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я умею отправлять почту из акцесса

там фишка не в аксе а в хостинге почты может быть
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38585005
Treason
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, что дело не в аксе, раз с другими настройками работало. Вопрос как под mail.ru все это намтроить
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38614274
Vitalay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samaranchesА я вот такую функцию использую:
Код: vbnet
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.
42.
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

Всё прекрасно работает и никаких глючных аутлуков не нужно

Всем привет. А как заставить данную функцию брать запрос и отправлять его в виде exel файла на почту? Пол дня сегодня убил, так и не получилось. Выручайте.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38614399
VitalayА как заставить данную функцию брать запрос и отправлять его в виде exel файла на почту? Пол дня сегодня убил, так и не получилось. Сначала надо экспортировать запрос в Excel, а при создании письма добавить файл в Attachments.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38614407
Vitalay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

а без этого никак нельзя, что ли?
при отправке через стандартную команду (аутлук) такая возможность есть, а как ее примострячить к данной функции х.з.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38614459
Vitalayпри отправке через стандартную команду (аутлук) такая возможность есть, а как ее примострячить к данной функции х.з. Вы имеете ввиду не прицепить файл, а всунуть в тело письма? Тогда вам нужно из данных запроса сформировать текст в формате HTML и всунуть его в oMSG.HTMLBody.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #38614536
Vitalay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

ну я не силен в этом, может быть вы поможете довести до ума данную функцию, буду премного благодарен
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Отправка почты из кода VBA.
    #39582161
blade_snl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Касательно нижеизложенной процедуры. Туплю на примитивном. Я ее прописал в глобальном модуле (поменял на свои настройки smtp и т.д.) и туплю - не могу понять, каков синтаксис обращения к ней из модулей? как именно мне указывать параметры в виде адресата, темы, тела??? помогите начинающему, пожалуйста!

автор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
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #39585520
cylindr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blade_snl,

У вас же сверху всё перечислено.

Код: vbnet
1.
call  sendEmail("123@pochta.ru", "тест", "Здравствуйте!")
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #39585560
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Только не call. Это функция, она возвращает значение, по которому можно проверить, успешно ли она сработала.
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #39585570
cylindr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

Небольшая поправка, посмотрел как у меня:
Код: vbnet
1.
call  sendEmail("123@pochta.ru", "тест", "Здравствуйте!", true)



так что call
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #39585821
Call for Function
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cylindrтак что callВы не поняли, о чем речь. Call вызывает функцию, да, но не получает результата ее выполнения. Через Call вызывают процедуры - вы же понимаете разницу между процедурами (Sub) и функциями (Function)?
Функцию нужно вызывать так (на нашем примере):

Dim result as Integer
result = sendEmail("123@pochta.ru", "тест", "Здравствуйте!", true)

при этом в result после выполнения функции будет некое значение, возвращенное функцией: в нашем случае либо 0 (сообщение отправлено не было), либо 1 (сообщение отправлено).

можно чуть сложнее, передавая результат выполнения функции не в переменную, а сразу в операторы ветвления:

If sendEmail("123@pochta.ru", "тест", "Здравствуйте!", true) = 0 Then
здесь код, который выполнится, если сообщение НЕ отправлено
Else
здесь код, если сообщение отправлено
End if

Об этом говорил Владимир Саныч
...
Рейтинг: 0 / 0
Отправка почты из кода VBA.
    #39586284
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Call for FunctionОб этом говорил Владимир Саныч
Спасибо за помощь. Вот не думал, что понадобится такое длинное пояснение.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отправка почты из кода VBA.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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