powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рассылка емейлов через CDO
16 сообщений из 16, страница 1 из 1
Рассылка емейлов через CDO
    #39990413
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех! Помогите решить задачу. Есть ленточная форма, в которую собираются определенные данные, в т.ч. имя, email и, например, задолженность клиента.
Каждому нужно отправить емейл напоминание. Отправляем каждому соответствующей кнопкой в строке формы.
Как сделать, чтобы все письма отправились сразу по нажатию одной кнопки на форме? Искал много, ничего похожего пока не нашел.
Пример базы прилагаю.
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990482
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr, не тестировал
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990484
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
wladimirrr, не тестировал

https://www.sql.ru/forum/actualfile.aspx?id=22183968] Приложенный файл (Email02.zip - 38Kb)
там поправь, забыл условие написать
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub cmdSendMailAll_Click()
    With Me.RecordsetClone
        If Not .EOF Then .MoveFirst
        Do Until .EOF
            SendEmail4 .Email, .First_name, .Pmnt, .Data
            .MoveNext
        Loop
    End With
End Sub

...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990578
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, спасибо большое! Тестирую.
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990580
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
wladimirrr, не тестировал

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub cmdSendMailAll_Click()
    With Me.RecordsetClone
        If Not .EOF Then .MoveFirst
        Do Until .EOF
            SendEmail4 .Email, .First_name, .Pmnt, .Data
            .MoveNext
        Loop
    End With
End Sub


А куда в коде можно вставить сообщение, что все емейлы отправлены успешно, что бы можно было визуально контролировать окончание процедуры?
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990585
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr
что бы можно было визуально контролировать окончание процедуры?


лучше вставить прогрессбар в форму, и ставить галочки в списке (ну или не ставить при ошибке)
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990587
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag
wladimirrr
что бы можно было визуально контролировать окончание процедуры?


лучше вставить прогрессбар в форму, и ставить галочки в списке (ну или не ставить при ошибке)

Это было бы круто! Как это сделать? Я такое не видел (прогрессбар).
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990596
wladimirrr,
Я, в свое время, не стал заморачиваться, повесил на кнопку перебор записей и отправку старым добрым SendObject.

Запрос, условием в котором является значение полей формы.
На основании запроса отчет.
И этот отчет кнопкой отправляется по почте.

Три версии аксеса уже сменилось, а форма все работает. Знаю, что можно по человечески переписать, но пока работает все руки не доходят.

Код: 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.
Private Sub Вывести_все_отчеты_по_точкамКнопка_Click()

On Error GoTo Вывести_все_отчеты_по_точкамКнопка_Err

DoCmd.GoToRecord acForm, "ФормаДляВыводаЗаявкиПоИнициатору", acLast
j = Form_ФормаДляВыводаЗаявкиПоИнициатору.[CurrentRecord]
DoCmd.GoToRecord acForm, "ФормаДляВыводаЗаявкиПоИнициатору", acFirst
For i = 1 To j - 1
            DoCmd.SendObject acSendReport, "Заявки", "Excel97-Excel2003Workbook(*.xls)", _
        ПолеEmail, "mail@домен.com", "", "название " & Format$(Date, "dd/mmm/yyyy"), _
        "Добрый день" & Chr(13) & Chr(10) & "жду письмо" , True

    DoCmd.GoToRecord acForm, "ФормаДляВыводаЗаявкиПоИнициатору", acNext
Next i

 DoCmd.SendObject acSendReport, "Заявки", "Excel97-Excel2003Workbook(*.xls)", _
        ПолеEmail, "mail@домен.com", "", "название " & Format$(Date, "dd/mmm/yyyy"), _
        "Добрый день" & Chr(13) & Chr(10) & "жду письмо" , True          

Вывести_все_отчеты_по_точкамКнопка_Exit:
    Exit Sub
    
Вывести_все_отчеты_по_точкамКнопка_Err:
    MsgBox Error$
    Resume Вывести_все_отчеты_по_точкамКнопка_Exit
End Sub
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990634
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
Панург
wladimirrr, не тестировал

https://www.sql.ru/forum/actualfile.aspx?id=22183968] Приложенный файл (Email02.zip - 38Kb)
там поправь, забыл условие написать
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub cmdSendMailAll_Click()
    With Me.RecordsetClone
        If Not .EOF Then .MoveFirst
        Do Until .EOF
            SendEmail4 .Email, .First_name, .Pmnt, .Data
            .MoveNext
        Loop
    End With
End Sub


Панург, рассылка работает.
Вопрос: если в форму добавить поле "Дата отправки", как туда записывать дату отправки емейла?
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990661
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr
Вопрос: если в форму добавить поле "Дата отправки", как туда записывать дату отправки емейла?
Примерно так.

Панург
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub cmdSendMailAll_Click()
    With Me.RecordsetClone
        If Not .EOF Then .MoveFirst
        Do Until .EOF
                if SendEmail4(.Email, .First_name, .Pmnt, .Data) then
                   .Edit
                    .[Дата отправки]=Date()
                   .Update
                end if
            .MoveNext
        Loop
    End With
End Sub

...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990662
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы.
wladimirrr
если в форму добавить поле "Дата отправки"
в таблице я бы не советовал так называть поле, соответственно в коде тоже нужно изменить
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990689
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
зы.
wladimirrr
если в форму добавить поле "Дата отправки"
в таблице я бы не советовал так называть поле, соответственно в коде тоже нужно изменить

Да, я понял. Спасибо!
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990696
FFFFFFFF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,
учти, что то, что письма ушли из твоей программы, не означает, что они отправлены. У каждого почтового провайдера есть ограничения на количество отправленных писем в единицу времени и прочие нюансы. Если писем много, надо по крайней мере делать искусственную задержку перед отправкой каждого последующего.
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990907
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FFFFFFFF
wladimirrr,
учти, что то, что письма ушли из твоей программы, не означает, что они отправлены. У каждого почтового провайдера есть ограничения на количество отправленных писем в единицу времени и прочие нюансы. Если писем много, надо по крайней мере делать искусственную задержку перед отправкой каждого последующего.

Ок, спасибо!
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990933
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
wladimirrr
Вопрос: если в форму добавить поле "Дата отправки", как туда записывать дату отправки емейла?
Примерно так.

Панург
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub cmdSendMailAll_Click()
    With Me.RecordsetClone
        If Not .EOF Then .MoveFirst
        Do Until .EOF
                if SendEmail4(.Email, .First_name, .Pmnt, .Data) then
                   .Edit
                    .[Дата отправки]=Date()
                   .Update
                end if
            .MoveNext
        Loop
    End With
End Sub


Да, так все работает, если записываем Дату отправки сразу в форму. Реальная форма имеет источник в виде необновляемого запроса и туда напрямую значение записать невозможно.
Я обычно пользуюсь запросом на обновление. Пробовал вставлять в этот код строку:
DoCmd.OpenQuery "Query1", acViewNormal, acEdit вместо .[Дата отправки]=Date(), не работает. Или здесь надо как-то иначе записывать значение в таблицу?
...
Рейтинг: 0 / 0
Рассылка емейлов через CDO
    #39990934
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr
Реальная форма имеет источник в виде необновляемого запроса и туда напрямую значение записать невозможно.
Пионеры, идите в *опу! (с)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рассылка емейлов через CDO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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