Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправление писем из 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]

>Либо помогите написать код который

либо что?


Наверх

Титульная страница Поиск, карта сайта Написать письмо