Question : Sableuse d'email de Delphes - probablement using le constructeur et le PsRBExportDevices de rapport

J'emploie Delphes 2009, constructeur de rapport et PsRBExportDevices PRO.

I veulent créer un module de sableuse d'email dans notre application avec les configurations suivantes : le programme du
a) court une question pour renvoyer un ensemble de données d'utilisateur du customers
b) est incité à concevoir leur
c) que page du rapport est envoyée au client correspondant avec la conception de rapport pendant que le corps du

I AM d'email (PAS COMME ATTACHEMENT) ouvert de TOUT L'email des idées/sugestions.

IMPORTANT REQUIREMENTS
* doit soutenir le formatage (par exemple couleurs/polices/graphiques) - ainsi doit être le rtf ou la sableuse d'email du format
* d'email de HTML doit pouvoir envoyer des centaines d'email sans obtenir bloquée par le filter
* d'anti-Spam de mail server ce module doit être commandé ou au moins contrôlé par notre applicaton
* de Delphes préférer ne pas devoir exporter vers le tiers que le
* de solution (mais le considérera) pour (b) le rédacteur peut être constructeur de rapport/MS Word/certain
* de rédacteur de HTML pour (b) si en utilisant le rédacteur de HTML puis quel rédacteur ? (par exemple composant de Delphes) ET comment fusionner des zones d'information de nos applications ? le

jusqu'ici ma meilleure tentative a été de faire ceci : Constructeur de rapport d'utilisation du
1) pour produire un rapport séparé par utilisation PsRBExportDevices du
2) d'exporter le rapport vers un dossier de pdf dans le dir
3) PsRBExportMasterControl.PDF.EmailAfterGenerate : L'ensemble du =true
4) l'événement de PsRBExportMasterControl.PDF.OnEmail au tIdSMTP joint de l'utilisation INDY du below
5) et tIdMessage pour envoyer à l'email

The des problèmes principaux avec ma tentative sont celui : le
i) que je ne peux pas obtenir le contenu du rapport de devenir le corps de l'email + je voudrait des graphiques dans le corps du
ii) j'obtiens des issues de Spam pour quelques serveurs de courrier (IE le serveur de envoi pas le serveur de réception) - ces serveurs ne m'aime pas envoyant un bon nombre d'email dans une période courte.  Mais comment les perspectives partent-elles avec elles (par exemple quand elles ont été en différé avec un bon nombre d'email prêts à envoyer) ?

Perhaps que je devrais juste abandonner et employer une compagnie de vente d'email de tiers telle que ce qui suit : rel= " nofollow " de " _blank " de target= de " http://www.emailmarketingsoftware.com.au/email-newsletters " de href= de * > rel= " nofollow " de " _blank " de target= de " http://www.vision6.com.au/ " de href= de * du -newsletters du oftware.co m.au/email de http://www.emailmarketings > rel= " nofollow " de " _blank " de target= de " http://www.futuremail.com.au/ " de href= de
* de http://www.vision6.com.au/ > http://www.futuremail.com. le rel= " nofollow " de " _blank " de target= de " http://www.ezymsg.com/ " de href= de au/
* > http://www.ezymsg.com/
BUT, si nous descendons ce
* de chemin… je doit pouvoir en mesure facilement aux listes de client d'exportation, détaille le
* etc. (peut être différent pour chaque email couru) que je le préférerais vraiment pour être évident car un dispositif sans couture dans notre logiciel/plutôt que font contrôler à l'utilisateur l'exportation/import
* je vraiment voudrais pouvoir exporter le contenu comme des rapports/factures de client dans le corps de chaque email par customer

As j'ai dit que je suis ouvert de toutes les idées/recommandations.  
THANK VOUS à l'avance à tout le contributors.
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
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 " de l'id= " codeSnippet652600 de
 de résultat '') et (résultat [longueur (résultat)] = « ; ") puis
      System.Delete (résultat, longueur (résultat), 1) ;
  extrémité ;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //
  procédé DoSMTPCreate ;
  commencer
    si (pas ConnectOnceSendMult) ou (fIdSMTP=nil) puis
    commencer
      fIdSMTP : =TIdSMTP.Create (individu) ;
      //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 ;
    extrémité ;
  extrémité ;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //
  procédé DoSMTPConnect ;
  commencer
    si (pas ConnectOnceSendMult) ou ((fIdSMTP<>nil) et (pas fIdSMTP.Connected)) puis
      fIdSMTP.Connect ;
  extrémité ;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //
  procédé DoSMTPDisconnect ;
  commencer
    si (pas ConnectOnceSendMult) ou (IsLastInSendMult et (fIdSMTP<>nil) et fIdSMTP.Connected) puis
      fIdSMTP.Disconnect ;
  extrémité ;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //
  procédé DoSMTPFree ;
  commencer
    si (pas ConnectOnceSendMult) ou (IsLastInSendMult et (fIdSMTP<>nil)) puis
      FreeAndNil (fIdSMTP) ;
  extrémité ;

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //
  procédé SendEmail ;
  variété
    IdMessage : TIdMessage ;
    IdAttachment : TIdAttachmentFile ;
    i : nombre entier ;
  commencer
    ExpMstCtrl : =PsRBExportMasterControl ;
    IdMessage : =TIdMessage.Create (individu) ;
    essai
      DoSMTPCreate ;

      avec IdMessage faire
      commencer
        pour I : =0 à EMailInfo.Attachments.Count-1 font
          IdAttachment : =TIDAttachmentFile.Create (MessageParts, EmailInfo.Attachments [I]) ;
        Body.Assign (EMailInfo.Body) ;
        Date : =EMailInfo.Date ;
        From.Name : =EMailInfo.FromName ;
        From.Address : =EMailInfo.FromAddress ;
        ReplyTo.EMailAddresses : =EMailInfo.ReplyTo ;
        Objet : =EMailInfo.Subject ;
        Recipients.EMailAddresses : =GetAddressString (EMailInfo.RecipientList.Text) ;
        CCList.EMailAddresses : =GetAddressString (EMailInfo.CCList.Text) ;
        BCCList.EMailAddresses : =GetAddressString (EMailInfo.BCCList.Text) ;
      extrémité ;

      essai
        DoSMTPConnect ;
        fIdSMTP.Send (IdMessage) ;
        //if a assigné (ExpMstCtrl.OnEMailSuccess) alors
        // ExpMstCtrl.OnEMailSuccess (ExpMstCtrl) ;
        EmailSent : =True ;
        DisplayMailProgress (le « email envoyé avec succès », rectifient) ;
      excepté
        sur E : L'exception font
        commencer
          //if a assigné (ExpMstCtrl.OnEMailError) alors
          // ExpMstCtrl.OnEmailError (expéditeur, E.Message)
          //else
          DisplayMailProgress ('erreur : '+E.Message, rectifient) ;
    	    MessageDlg (E.Message, mtError, [mbOK], 0) ;
          Continuer : =False ;
        extrémité ;
      extrémité ;
    finalement
      DoSMTPDisconnect ;
      DoSMTPFree ;
      IdMessage.Free ;
    extrémité ;
  extrémité ;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ de //  
commencer
  si EmailDialogsEnabled alors
  commencer
    EmailParamFrm : =TEmailParamsForm.Create (individu, zéro) ;
    avec EmailParamFrm, EMailInfo, TransPostHelper.EmailTemplatesTable font
    essai
      edFromName.Text : =FieldByName (« FromName ").AsString ;
      edFromAddr.Text : =FieldByName (« FromAddress ").AsString ;
      edTo.Text : =EmailRecipients ;
      si (EmailCCRecipients<> '') puis
        edCc.Text : =EmailCCRecipients
      autrement
        edCc.Text : =FieldByName (« cc ").AsString ;
      si (EmailBCCRecipients<> '') puis
        edBcc.Text : =EmailBCCRecipients
      autrement
        edBcc.Text : =FieldByName (« BCC ").AsString ;
      si (EmailSubject<> '') puis
        edSubject.Text : =EmailSubject
      autrement
        edSubject.Text : =GetEmailSubject (FieldByName (« sujet ").AsString) ;
      si (EmailBody<> '') puis
        memoBody.Lines.Text : =EmailBody
      autrement
        memoBody.Lines.Text : =FieldByName (« corps ").AsString ;
      si EmailAccount<> '' puis
        Légende : =Caption+ - '+EmailAccount ;

      recherche : =ShowModal ;
      si res=mrYes alors
      commencer
        Centre serveur : = FieldByName (« centre serveur ").AsString ;                 //DisplayMailProgress ('centre serveur de Host='+) ;
        Identification de l'utilisateur : = FieldByName (« username ").AsString ;           //DisplayMailProgress ('identification de l'utilisateur d'UserId='+) ;
        Mot de passe : = FieldByName (« mot de passe ").AsString ;         //DisplayMailProgress ('mot de passe de Password='+) ;
        Body.Text : =memoBody.Lines.Text ;                       //DisplayMailProgress ('Body='+ Body.Text) ;
        Date : = maintenant ;                                          //DisplayMailProgress ('Date='+ DateToStr (date));
        FromAddress : = edFromAddr.Text ;                       //DisplayMailProgress ('FromAddress='+ FromAddress) ;
        FromName : = edFromName.Text ;                          //DisplayMailProgress ('FromName='+ FromName) ;
        ReplyTo : = FieldByName (« ReplyTo ").AsString ;           //DisplayMailProgress ('ReplyTo='+ ReplyTo) ;
        Objet : = edSubject.Text ;                            //DisplayMailProgress ('sujet de 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 ;
        sinon ReportSettings.IncludeAttachment alors
          Attachments.Clear ;
      extrémité
      autrement si res=mrNo alors
      commencer
        EMailInfo.CancelEMail : =True ;
        DisplayMailProgress (le « email n'est pas envoyé - l'intervention d'utilisateur », rectifient) ;
// si SMProgForm<>nil alors
// SMProgForm.UpdateProgress (le « email n'est pas envoyé - intervention d'utilisateur », vraies)
// autrement si SMProgDetForm<>nil alors
// SMProgDetForm.UpdateProgress (le « email n'est pas envoyé - intervention d'utilisateur », vrai, faux) ;
      extrémité
      autrement si res=mrAbort alors
      commencer
        EMailInfo.CancelEMail : =True ;
        Continuer : =False ;
        DisplayMailProgress (le « email n'est pas envoyé - l'intervention d'utilisateur », rectifient) ;
        DisplayMailProgress (le « envoi par courrier électronique du processus est arrêté - intervention d'utilisateur », fausses) ;
// si SMProgForm<>nil alors
// commencent
// SMProgForm.UpdateProgress (le « email n'est pas envoyé - l'intervention d'utilisateur », rectifient) ;
// SMProgForm.UpdateProgress (le « envoi par courrier électronique du processus est arrêté - intervention d'utilisateur », fausses) ;
extrémité de //
// autrement si SMProgDetForm<>nil alors
// commencent
// SMProgDetForm.UpdateProgress (le « email n'est pas envoyé - intervention d'utilisateur », vrai, faux) ;
// SMProgDetForm.UpdateProgress (le « envoi par courrier électronique du processus est arrêté - intervention d'utilisateur », faux, faux) ;
extrémité de // ;
      extrémité ;
    finalement
      EmailParamFrm.Free ;
    extrémité ;
  extrémité
  autrement
  commencer
    avec EMailInfo, TransPostHelper.EmailTemplatesTable font
    commencer
      Centre serveur : = FieldByName (« centre serveur ").AsString ;
      Identification de l'utilisateur : = FieldByName (« username ").AsString ;
      Mot de passe : = FieldByName (« mot de passe ").AsString ;
      si (EmailBody<> '') puis
        Body.Text : =EmailBody
      autrement
        Body.Text : =FieldByName (« corps ").AsString ;
      Date : = maintenant ;
      FromAddress : = FieldByName (« FromAddress ").AsString ;
      FromName : = FieldByName (« FromName ").AsString ;
      ReplyTo : = FieldByName (« ReplyTo ").AsString ;
      si (EmailSubject<> '') puis
        Objet : =EmailSubject
      autrement
        Objet : =GetEmailSubject (FieldByName (« sujet ").AsString) ;
      RecipientList.CommaText : =EmailRecipients ;
      si (EmailCCRecipients<> '') puis
        CCList.CommaText : =EmailCCRecipients
      autrement
        CCList.CommaText : =FieldByName (« cc ").AsString ;
      si (EmailBCCRecipients<> '') puis
        BCCList.CommaText : =EmailBCCRecipients
      autrement
        BCCList.CommaText : =FieldByName (« BCC ").AsString ;
      DeleteFilesAfterEMail : =True ;
      sinon ReportSettings.IncludeAttachment alors
        Attachments.Clear ;
    extrémité ;
  extrémité ;

  sinon EMailInfo.CancelEMail alors
  commencer
    SendEmail ;
    EMailInfo.CancelEMail : =True ;  // ceci est d'arrêter l'email de défaut envoyant l'événement
  extrémité ;
extrémité ;
class= de

Réponse : Sableuse d'email de Delphes - probablement using le constructeur et le PsRBExportDevices de rapport

Envoyant l'email à votre serveur… Les serveurs bons d'email ont des temporisateurs ici sont quelques choses à penser environ.
Les serveurs d'email de choses font…
1.  Limiter le nombre de raccordements dans une période
2.  Limiter le nombre de destinataires dans un email simple
3.  Limiter le nombre de retrys
4.  Limiter le nombre d'email introduits une période « pensent à retarder entre chacun envoient »
5.  Examiner votre email pour assurer le « Spam » qui pourrait être des graphiques ou des phrases clés.  le Spam est également évalué sur combien d'email vous envoyez qui sont « identiques ou avec peu de variation »

Pièce de Delphes
l'envoi de l'email using des composants d'Indy est assez facile.  Si vous avez besoin d'un essai de système basé par calibre using une forme de HTML avec les étiquettes faites sur commande comme <> etc… puis l'utilisation un producteur de page de compléter les étiquettes itérativement.

Le Général Tackett
  Et certains les la plupart limitent le nombre de raccordements dans une période avec le nombre d'email introduits une période.  
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us