![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправление писем из Delphi 7 через Outlook [D7, WinXP]
Виталий © (2011-11-22 21:16:00)У меня есть программный код в VBA, мне нужно его перевести для Delphi 7. Программный код прилагается ниже. Либо помогите написать код который из БД в Delphi 7 будет отправлять письма через Microsoft Outlook. За ранние спасибо.
Private Sub Otpravit_Click()
On Error GoTo Err_Otpravit_Click
' Отправка писем
Dim prog As Outlook.Application ' Объект - программаOutlook
Dim baza As Database ' Объект - база данных
Dim tablica As Recordset ' Таблица ТаблицаПисьма
Dim i As Integer ' Счетчик цикла
Dim portion As Integer ' Счетчик порций
Dim zapis As Integer ' Номер записи
Dim pismo As MailItem ' Объект - почтовое сообщение
Dim dopfail As String ' Присоединяемый файл
Dim Copies As Integer ' Число копий письма
Dim pauza As Integer ' Величина интервала ожидания
Dim PauseTime, Start ' Переменные для таймера
Dim Konec As Boolean ' Конец таблицы
Dim myNamespace As Outlook.NameSpace
' Создание объектов для письма
Set prog = New Outlook.Application
Set myNamespace = prog.GetNamespace("MAPI")
' Начальные значения переменных
dopfile = " "
If Len(Trim(Me!Text9)) > 0 Then dopfail = Me!Text9
dopfile = Trim(dopfile)
pauza = Me!Interval
Konec = False
If pauza < 0 Then pauza = 1
Copies = Me!Kopii
If Copies < 0 Then Copies = 1
' Подключение таблицы
Set baza = CurrentDb ' Работаем с этой же БД
Set tablica = baza.OpenRecordset("SELECT * FROM [ТаблицаАдреса] WHERE ([Да]=True);")
' Основной цикл
Do While Me!Check34 And Not Konec
Me.Refresh ' Пересчет данных формы
If tablica.RecordCount <> 0 Then ' Таблица не должна быть пустой
tablica.MoveLast ' Последняя запись
tablica.MoveFirst ' Первая запись
zapis = 1
' Ищем новые записи
Do While tablica!flag = 1 And zapis < tablica.RecordCount
tablica.MoveNext ' Выбор следующей записи
zapis = zapis + 1
Loop
If tablica.RecordCount - zapis >= Copies Then ' Определение количества адресов
portion = Copies
Else
portion = tablica.RecordCount - zapis + 1
End If
' Формирование письма в формате Outlook
Set pismo = prog.CreateItem(olMailItem) ' Создание объекта
pismo.Subject = Me!Tema ' Тема сообщения
pismo.Body = Me!Tekst ' Текст сообщения
If dopfail <> "" Then pismo.Attachments.Add dopfail ' Дополнительный файл
For i = 1 To portion ' Перебор очередной порции адресов
If tablica!Да And Not Konec Then
If tablica!flag <> 1 Then
pismo.Recipients.Add tablica!Email ' Еще один адрес
tablica.Edit
tablica!flag = 1 ' Адрес использован
tablica.Update
End If
End If
If zapis < tablica.RecordCount Then
tablica.MoveNext ' Выбор следующего адреса
zapis = zapis + 1
Else
Konec = True
End If
Next
Me!Obrab = zapis ' Индикация номера записи в форме
' pismo.Display ' Показ письма в окне. Для отладки
pismo.Send ' Отправка письма
Me!Поле93 = "РАССЫЛКА"
Me!Поле93.BackColor = RGB(0, 250, 0)
End If
' Интервал ожидания
PauseTime = pauza ' Установка величины паузы
Start = Timer ' Текущее значение таймера
Do While Timer < Start + PauseTime And Me!Check34 ' Цикл ожидания
DoEvents ' Позволяется работать другим процессам
Loop
Loop
Me!Поле93 = "ОСТАНОВ"
Me!Поле93.BackColor = RGB(200, 200, 200)
tablica.Close ' Закрытие таблицы
' Обработка ошибки
Exit_Otpravit_Click:
prog.Quit
Exit Sub
Err_Otpravit_Click:
MsgBox Err.Description ' Сообщение об ошибке
Resume Exit_Otpravit_Click
End Sub
Плохиш (2011-11-24 11:41:00) [1]500 евро, предоплата.
Виталий (2011-11-24 00:53:00) [2]Выручайте блин без вас не как =))
Германн (2011-11-24 00:48:00) [3]
> Виталий (23.11.11 23:08) [8]
Ну сколько можно попрошайничать?
Dennis I. Komarov (2011-11-23 23:55:00) [4]"альпийское нищенство – святое дело"
Омлет (2011-11-23 23:43:00) [5]Проще, дай номер кошелька - мы тебе денег отправим.
Виталий (2011-11-23 23:08:00) [6]А дальше можешь написать код полностью а то в это не чего не понимаю =)))
Dennis I. Komarov (2011-11-23 11:32:00) [7]ключевые слова:
> У меня есть программный код в VBA, мне нужноего перевести
P.S.
> либо что?
Заспамит своим VBA
OW (2011-11-23 11:18:00) [8]по сабжу:
Помогают тем, кто что-то сделал сам и что-то не получилось/ не получается.
Вы же заказываете сделать работу. Тут и такое делают, но за деньги и под настроение.
по флуду:
мне больше
> За ранние
понравилось :)
в диктанте попадется такое слово - уже трояк, три ошибки на орфографию
Anatoly Podgoretsky (2011-11-23 10:19:00) [9]> Виталий (22.11.2011 21:59:02) [2]
На многих серверах сущуствуют форумы Работа, не пробовал там заказать?
han_malign (2011-11-23 10:16:00) [10]
var prog: OleVariant;
myNamespace: OleVariant;
.....
begin
try
//' Создание объектов для письма
prog:= CreateOLEObject('Outlook.Application');
myNamespace = prog.GetNamespace('MAPI');
...........
- и так далее...
Кщд (2011-11-23 07:34:00) [11]>Виталий (22.11.11 21:59) [2]
Как делали, что не получилось?
Виталий (2011-11-22 21:59:00) [12]Либо помогите написать программный код который будет отправлять письма из БД в Delphi 7 через Microsoft Outlook.
Плохиш (2011-11-22 21:29:00) [13]>Либо помогите написать код который
либо что?