CtdlSubmitMsg(imsg, NULL, SMTP_SPOOLOUT_ROOM);
CtdlFreeMessage(imsg);
}
+
+ /*
+ * Process digest recipients
+ */
+ if ((sc->digestrecps != NULL) && (sc->digestfp != NULL)) {
+ fprintf(sc->digestfp, " -----------------------------------"
+ "------------------------------------"
+ "-------\r\n");
+ CtdlRedirectOutput(sc->digestfp, -1);
+ CtdlOutputMsg(msgnum, MT_RFC822, HEADERS_ALL, 0, 1);
+ CtdlRedirectOutput(NULL, -1);
+ }
/*
* Process IGnet push shares
char instr[SIZ];
FILE *fp;
struct SpoolControl sc;
- /* struct namelist *digestrecps = NULL; */
struct namelist *nptr;
lprintf(7, "Spooling <%s>\n", room_to_spool);
extract(nptr->name, buf, 1);
sc.listrecps = nptr;
}
+ else if (!strcasecmp(instr, "digestrecp")) {
+ nptr = (struct namelist *)
+ mallok(sizeof(struct namelist));
+ nptr->next = sc.digestrecps;
+ extract(nptr->name, buf, 1);
+ sc.digestrecps = nptr;
+ }
else if (!strcasecmp(instr, "ignet_push_share")) {
nptr = (struct namelist *)
mallok(sizeof(struct namelist));
}
fclose(fp);
+ /* If there are digest recipients, we have to build a digest */
+ if (sc.digestrecps != NULL) {
+ sc.digestfp = tmpfile();
+ }
/* Do something useful */
CtdlForEachMessage(MSGS_GT, sc.lastsent, NULL, NULL,
network_spool_msg, &sc);
+ /* If we wrote a digest, deliver it and then close it */
+ if (sc.digestfp != NULL) {
+ fprintf(sc->digestfp, " -----------------------------------"
+ "------------------------------------"
+ "-------\r\n");
+ /* FIXME deliver it! */
+ fclose(sc.digestfp);
+ }
/* Now rewrite the config file */
fp = fopen(filename, "w");
phree(sc.listrecps);
sc.listrecps = nptr;
}
+ /* Do the same for digestrecps */
+ while (sc.digestrecps != NULL) {
+ fprintf(fp, "digestrecp|%s\n", sc.digestrecps->name);
+ nptr = sc.digestrecps->next;
+ phree(sc.digestrecps);
+ sc.digestrecps = nptr;
+ }
while (sc.ignet_push_shares != NULL) {
fprintf(fp, "ignet_push_share|%s\n",
sc.ignet_push_shares->name);
is used for "list serve" applications.
+ INSTRUCTION: digestrecp
+ SYNTAX: digestrecp|friko@mumjiboolean.com
+ DESCRIPTION:
+ Defines a recipient to whom all messages in this room should be sent. This
+is used for "list serve" applications. The difference between listrecps and
+digestrecps is that the latter will have messages embedded inside a message
+sent by the listserver. The message will appear to be sent by the room's
+e-mail address instead of the sender's e-mail address.
+
+
INSTRUCTION: ignet_push_share
SYNTAX: ignet_push_share|uncnsrd
DESCRIPTION: