Вопрос : Взрывное устройство электронная почта Делфи - по возможности using строитель и PsRBExportDevices рапорта

Я использую Делфи 2009, строитель рапорта и PsRBExportDevices PRO.

I хочет создать модуль взрывного устройства электронная почта в нашем применении с следующий характеристиками:
a) Программа бежит вопрос для того чтобы возвратить dataset потребителя customers
b) пробуждена конструировать их
c конструкции шаблона/отчета о электронная почта 1 страницой в клиент) (с) каждая, котор страница рапорта посылана по электронной почте к соответствуя клиенту с конструкцией рапорта по мере того как телу

I am электронная почта (НЕ КАК ПРИЛОЖЕНИЕ) открытого к ВСЕМУ электронная почта идей/sugestions.

IMPORTANT REQUIREMENTS
* нужно поддержать форматизацию (например цветы/купели/графики) - поэтому должен быть RTF или взрывному устройству электронная почта format
* электронная почта HTML нужно мочь послать сотниы электронная почта без получать прегражено посылая filter
* анти--спам сервера почты Этот модуль должен быть контролируем или хотя бы управило наше applicaton
* Делфи предпочитайте ехпортировать к посреднику
* разрешения (но рассмотрит его), котор для редактора (b) может быть словом строителя рапорта/MS/некоторым
* редактора HTML для (b) если использующ редактора HTML после этого, то что редактор? (например компонент delphi) И как слить поля данных от наших применений?

до тех пор моя самая лучшая попытка должно сделать это: Строитель отчете о пользы
1) для того чтобы произвести отдельно рапорт согласно с польза PsRBExportDevices
2) ехпортировать рапорт к архиву PDF в dir
3) установленное PsRBExportMasterControl.PDF.EmailAfterGenerate: Комплект =true
4) случай PsRBExportMasterControl.PDF.OnEmail к прикрепленному tIdSMTP пользы INDY below
5) и tIdMessage для посылки основных проблем email

The с моей попыткой то:
i) Я не могу получить, что содержание рапорта стал телом электронная почта + я хотел был бы графики в теле
ii электронная почта также), котор я получаю вопросы спам для некоторых серверов почты (ie посылая сервер не получая сервер) - этих серверов не люблю я посылая серии электронная почта в коротком периоде.  Но как внешний вид получает прочь с им (например когда он автономен с сериями электронная почта готовых для посылки)?

Perhaps, котор я должен как раз дать вверх и использовать компанию маркетинга электронная почта посредника как следующий: rel= " nofollow " " _blank " " target= " http://www.emailmarketingsoftware.com.au/email-newsletters href= * > rel= " nofollow " " _blank " " target= " http://www.vision6.com.au/ href= * -newsletters oftware.co m.au/email http://www.emailmarketings > rel= " nofollow " " _blank " " target= " http://www.futuremail.com.au/ href=
* http://www.vision6.com.au/ > http://www.futuremail.com. rel= " nofollow " " _blank " " target= " http://www.ezymsg.com/ href= au/
* > http://www.ezymsg.com/
BUT, если мы идем вниз с этого
* курса… я, то должно мочь к легк спискам клиента экспорта, детализирует
*, котор etc (смогите быть по-разному для каждого побежали электронная почта, котор) я реально предпочитал бы его для того чтобы показаться по мере того как безшовная характеристика в нашем средстве программирования/довольно чем имеет потребитель управлять экспортом/import
* я реально хотел был бы мочь ехпортировать содержание как заявления/фактуры клиента в тело каждого электронная почта согласно с customer

As я сказал я открыт к всем идеям/рекомендациям.  
THANK ВЫ заранее к всему contributors.
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
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:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
>procedure TPrintBaseForm.PsRBExportMasterControlEMail " class= " id= " codeSnippet652600
 результата '') и, то (результат [длина (результат)] = «; ") после этого
      System.Delete (результат, длина (результат), 1);
  конец;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
  процедура DoSMTPCreate;
  начните
    если (не ConnectOnceSendMult) или (fIdSMTP=nil) после этого
    начните
      fIdSMTP: =TIdSMTP.Create (собственная личность);
      //fIdSMTP.OnConnected: =ExpMstCtrl.OnEMailConnected;
      //fIdSMTP.OnDisconnected: =ExpMstCtrl.OnEMailDisConnected;
      //fIdSMTP.OnStatus: =ExpMstCtrl.OnEMailStatus;
      fIdSMTP.Host: =EMailInfo.Host;
      fIdSMTP.UserName: =EMailInfo.UserID;
      fIdSMTP.Password: =EMailInfo.Password;
      fIdSMTP.AuthType: =satNone;
    конец;
  конец;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
  процедура DoSMTPConnect;
  начните
    если (не ConnectOnceSendMult) или, то ((fIdSMTP<>nil) и (не fIdSMTP.Connected)) после этого
      fIdSMTP.Connect;
  конец;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
  процедура DoSMTPDisconnect;
  начните
    если (не ConnectOnceSendMult) или (IsLastInSendMult и (fIdSMTP<>nil) и fIdSMTP.Connected) после этого
      fIdSMTP.Disconnect;
  конец;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
  процедура DoSMTPFree;
  начните
    если (не ConnectOnceSendMult) или, то (IsLastInSendMult и (fIdSMTP<>nil)) после этого
      FreeAndNil (fIdSMTP);
  конец;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
  процедура SendEmail;
  var
    IdMessage: TIdMessage;
    IdAttachment: TIdAttachmentFile;
    iий: интежер;
  начните
    ExpMstCtrl: =PsRBExportMasterControl;
    IdMessage: =TIdMessage.Create (собственная личность);
    попытка
      DoSMTPCreate;

      с IdMessage сделайте
      начните
        для I: =0 к EMailInfo.Attachments.Count-1 делают
          IdAttachment: =TIDAttachmentFile.Create (MessageParts, EmailInfo.Attachments [I]);
        Body.Assign (EMailInfo.Body);
        Дата: =EMailInfo.Date;
        From.Name: =EMailInfo.FromName;
        From.Address: =EMailInfo.FromAddress;
        ReplyTo.EMailAddresses: =EMailInfo.ReplyTo;
        Вопрос: =EMailInfo.Subject;
        Recipients.EMailAddresses: =GetAddressString (EMailInfo.RecipientList.Text);
        CCList.EMailAddresses: =GetAddressString (EMailInfo.CCList.Text);
        BCCList.EMailAddresses: =GetAddressString (EMailInfo.BCCList.Text);
      конец;

      попытка
        DoSMTPConnect;
        fIdSMTP.Send (IdMessage);
        //if задало (ExpMstCtrl.OnEMailSuccess) после этого
        // ExpMstCtrl.OnEMailSuccess (ExpMstCtrl);
        EmailSent: =True;
        DisplayMailProgress («электронная почта посланное успешно», True);
      за исключением
        на e: Исключение делает
        начните
          //if задало (ExpMstCtrl.OnEMailError) после этого
          // ExpMstCtrl.OnEmailError (прислужник, E.Message)
          //else
          DisplayMailProgress ('ошибка: '+E.Message, True);
    	    MessageDlg (E.Message, mtError, [mbOK], 0);
          Продолжайтесь: =False;
        конец;
      конец;
    окончательно
      DoSMTPDisconnect;
      DoSMTPFree;
      IdMessage.Free;
    конец;
  конец;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //  
начните
  если EmailDialogsEnabled после этого
  начните
    EmailParamFrm: =TEmailParamsForm.Create (собственная личность, ноли);
    с EmailParamFrm, EMailInfo, TransPostHelper.EmailTemplatesTable делает
    попытка
      edFromName.Text: =FieldByName («FromName ").AsString;
      edFromAddr.Text: =FieldByName («FromAddress ").AsString;
      edTo.Text: =EmailRecipients;
      если (EmailCCRecipients<> '') после этого
        edCc.Text: =EmailCCRecipients
      еще
        edCc.Text: =FieldByName («CC ").AsString;
      если (EmailBCCRecipients<> '') после этого
        edBcc.Text: =EmailBCCRecipients
      еще
        edBcc.Text: =FieldByName («BCC ").AsString;
      если (EmailSubject<> '') после этого
        edSubject.Text: =EmailSubject
      еще
        edSubject.Text: =GetEmailSubject (FieldByName («вопрос ").AsString);
      если (EmailBody<> '') после этого
        memoBody.Lines.Text: =EmailBody
      еще
        memoBody.Lines.Text: =FieldByName («тело ").AsString;
      если EmailAccount<> '' после этого
        Титр: =Caption+ - '+EmailAccount;

      res: =ShowModal;
      если res=mrYes после этого
      начните
        Хозяин: = FieldByName («хозяин ").AsString;                 //DisplayMailProgress ('хозяин Host='+);
        UserID: = FieldByName («UserName ").AsString;           //DisplayMailProgress ('UserId='+ UserID);
        Пароль: = FieldByName («пароль ").AsString;         //DisplayMailProgress ('пароль Password='+);
        Body.Text: =memoBody.Lines.Text;                       //DisplayMailProgress ('Body='+ Body.Text);
        Дата: = теперь;                                          //DisplayMailProgress ('Date='+ DateToStr (дата));
        FromAddress: = edFromAddr.Text;                       //DisplayMailProgress ('FromAddress='+ FromAddress);
        FromName: = edFromName.Text;                          //DisplayMailProgress ('FromName='+ FromName);
        ReplyTo: = FieldByName («ReplyTo ").AsString;           //DisplayMailProgress ('ReplyTo='+ ReplyTo);
        Вопрос: = edSubject.Text;                            //DisplayMailProgress ('вопрос Subject='+);
        RecipientList.Commatext: =edTo.Text;                   //DisplayMailProgress ('Recipient='+ RecipientList.Commatext);
        EmailRecipients: =edTo.Text;
        EmailSubject: =edSubject.Text;
        EmailBody: =memoBody.Lines.Text;
        EmailCCRecipients: =edCc.Text;
        EmailBCCRecipients: =edBcc.Text;
        CCList.Add (edCc.Text);
        BCCList.Add (edBcc.Text);
        DeleteFilesAfterEMail: =True;
        если не ReportSettings.IncludeAttachment после этого
          Attachments.Clear;
      конец
      еще если res=mrNo после этого
      начните
        EMailInfo.CancelEMail: =True;
        DisplayMailProgress («электронная почта не послано - интервенция потребителя», True);
// если SMProgForm<>nil после этого
// SMProgForm.UpdateProgress («не послано электронная почта - интервенция потребителя», поистине)
// еще если SMProgDetForm<>nil после этого
// SMProgDetForm.UpdateProgress («не послано электронная почта - интервенция потребителя», поистине, ложные);
      конец
      еще если res=mrAbort после этого
      начните
        EMailInfo.CancelEMail: =True;
        Продолжайтесь: =False;
        DisplayMailProgress («электронная почта не послано - интервенция потребителя», True);
        DisplayMailProgress («остановлен посылать процесс по электронной почте - интервенция потребителя», ложные);
// если SMProgForm<>nil после этого
// начинает
// SMProgForm.UpdateProgress («электронная почта не послано - интервенция потребителя», True);
// SMProgForm.UpdateProgress («остановлен посылать процесс по электронной почте - интервенция потребителя», ложные);
конец //
// еще если SMProgDetForm<>nil после этого
// начинает
// SMProgDetForm.UpdateProgress («не послано электронная почта - интервенция потребителя», поистине, ложные);
// SMProgDetForm.UpdateProgress («остановлен посылать процесс по электронной почте - интервенция потребителя», ложное, ложные);
конец //;
      конец;
    окончательно
      EmailParamFrm.Free;
    конец;
  конец
  еще
  начните
    с EMailInfo, TransPostHelper.EmailTemplatesTable делают
    начните
      Хозяин: = FieldByName («хозяин ").AsString;
      UserID: = FieldByName («UserName ").AsString;
      Пароль: = FieldByName («пароль ").AsString;
      если (EmailBody<> '') после этого
        Body.Text: =EmailBody
      еще
        Body.Text: =FieldByName («тело ").AsString;
      Дата: = теперь;
      FromAddress: = FieldByName («FromAddress ").AsString;
      FromName: = FieldByName («FromName ").AsString;
      ReplyTo: = FieldByName («ReplyTo ").AsString;
      если (EmailSubject<> '') после этого
        Вопрос: =EmailSubject
      еще
        Вопрос: =GetEmailSubject (FieldByName («вопрос ").AsString);
      RecipientList.CommaText: =EmailRecipients;
      если (EmailCCRecipients<> '') после этого
        CCList.CommaText: =EmailCCRecipients
      еще
        CCList.CommaText: =FieldByName («CC ").AsString;
      если (EmailBCCRecipients<> '') после этого
        BCCList.CommaText: =EmailBCCRecipients
      еще
        BCCList.CommaText: =FieldByName («BCC ").AsString;
      DeleteFilesAfterEMail: =True;
      если не ReportSettings.IncludeAttachment после этого
        Attachments.Clear;
    конец;
  конец;

  если не EMailInfo.CancelEMail после этого
  начните
    SendEmail;
    EMailInfo.CancelEMail: =True;  // это должно остановить электронная почта невыполнения обязательства посылая случаться
  конец;
конец;
class=

Ответ : Взрывное устройство электронная почта Делфи - по возможности using строитель и PsRBExportDevices рапорта

Посылающ электронная почта к вашему серверу… Хорошие серверы электронная почта имеют отметчики времени здесь будут некоторыми вещами, котор нужно думать около.
Серверы электронная почта вещей делают…
1.  Ограничивайте число соединений в периоде времени
2.  Ограничивайте число получателей в одиночном электронная почта
3.  Ограничивайте число retrys
4.  Ограничивайте число электронная почта посланных в периоде времени «думайте задерживать между каждым пошлите»
5.  Проверите ваше электронная почта для «спам» smogло быть графиками или ключевыми фразами.  спам также занявший в рейтинге на сколько электронная почта вы посылаете «идентично или с меньшим изменением»

Часть Делфи
посылка электронная почта using компоненты Indy довольно легка.  Если вам нужна основанная шаблоном попытка системы using форма HTML с изготовленный на заказ бирками как <> etc… после этого, то используйте производителя страницы для того чтобы заполнить внутри бирки итеративно.

Дженерал Tackett
  И некоторые большая часть ограничивают число соединений в периоде времени вместе с числом электронная почта посланных в периоде.  
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us