VACATION and REJECT messages now appear to come from
[citadel.git] / citadel / serv_listsub.c
index 9154e60119f2c230d4c453e3e13cac5a3da00588..bab07a74badc7867e504ccfc39cef58c93dde047 100644 (file)
@@ -3,7 +3,7 @@
  *
  * This module handles self-service subscription/unsubscription to mail lists.
  *
- * Copyright (C) 2002 by Art Cancro and others.
+ * Copyright (C) 2002-2005 by Art Cancro and others.
  * This code is released under the terms of the GNU General Public License.
  *
  */
@@ -106,7 +106,7 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) {
 
        listsub_generate_token(token);
 
-       assoc_file_name(filename, sizeof filename, &qrbuf, "netconfigs");
+       assoc_file_name(filename, sizeof filename, &qrbuf, ctdl_netcfg_dir);
 
        /* 
         * Make sure the requested address isn't already subscribed
@@ -158,17 +158,43 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) {
        urlesc(urlroom, qrbuf.QRname);
 
        snprintf(confirmation_request, sizeof confirmation_request,
-               "Content-type: text/html\nMIME-Version: 1.0\n\n"
-               "<HTML><BODY>"
+
+               "MIME-Version: 1.0\n"
+               "Content-Type: multipart/alternative; boundary=\"__ctdlmultipart__\"\n"
+               "\n"
+               "This is a multipart message in MIME format.\n"
+               "\n"
+               "--__ctdlmultipart__\n"
+               "Content-type: text/plain\n"
+               "\n"
+               "Someone (probably you) has submitted a request to subscribe\n"
+               "<%s> to the '%s' mailing list.\n"
+               "\n"
+               "Please go here to confirm this request:\n"
+               "  %s?room=%s&token=%s&cmd=confirm  \n"
+               "\n"
+               "If this request has been submitted in error and you do not\n"
+               "wish to receive the '%s' mailing list, simply do nothing,\n"
+               "and you will not receive any further mailings.\n"
+               "\n"
+               "--__ctdlmultipart__\n"
+               "Content-type: text/html\n"
+               "<HTML><BODY>\n"
                "Someone (probably you) has submitted a request to subscribe\n"
                "&lt;%s&gt; to the <B>%s</B> mailing list.<BR><BR>\n"
                "Please click here to confirm this request:<BR>\n"
-               "<A HREF=\"http://%s?room=%s&token=%s&cmd=confirm\">"
-               "http://%s?room=%s&token=%s&cmd=confirm</A><BR><BR>\n"
+               "<A HREF=\"%s?room=%s&token=%s&cmd=confirm\">"
+               "%s?room=%s&token=%s&cmd=confirm</A><BR><BR>\n"
                "If this request has been submitted in error and you do not\n"
                "wish to receive the '%s' mailing list, simply do nothing,\n"
                "and you will not receive any further mailings.\n"
-               "</BODY></HTML>\n",
+               "</BODY></HTML>\n"
+               "\n"
+               "--__ctdlmultipart__--\n",
+
+               email, qrbuf.QRname,
+               webpage, urlroom, token,
+               qrbuf.QRname,
 
                email, qrbuf.QRname,
                webpage, urlroom, token,
@@ -178,6 +204,7 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) {
 
        quickie_message(        /* This delivers the message */
                "Citadel",
+               NULL,
                email,
                NULL,
                confirmation_request,
@@ -219,7 +246,7 @@ void do_unsubscribe(char *room, char *email, char *webpage) {
 
        listsub_generate_token(token);
 
-       assoc_file_name(filename, sizeof filename, &qrbuf, "netconfigs");
+       assoc_file_name(filename, sizeof filename, &qrbuf, ctdl_netcfg_dir);
 
        /* 
         * Make sure there's actually a subscription there to remove
@@ -270,19 +297,43 @@ void do_unsubscribe(char *room, char *email, char *webpage) {
        urlesc(urlroom, qrbuf.QRname);
 
        snprintf(confirmation_request, sizeof confirmation_request,
-               "Content-type: text/html\nMIME-Version: 1.0\n\n"
-               "<HTML><BODY>"
-               "Someone (probably you) has submitted a request "
-               "to unsubscribe\n"
+
+               "MIME-Version: 1.0\n"
+               "Content-Type: multipart/alternative; boundary=\"__ctdlmultipart__\"\n"
+               "\n"
+               "This is a multipart message in MIME format.\n"
+               "\n"
+               "--__ctdlmultipart__\n"
+               "Content-type: text/plain\n"
+               "\n"
+               "Someone (probably you) has submitted a request to unsubscribe\n"
+               "<%s> from the '%s' mailing list.\n"
+               "\n"
+               "Please go here to confirm this request:\n"
+               "  %s?room=%s&token=%s&cmd=confirm  \n"
+               "\n"
+               "If this request has been submitted in error and you do not\n"
+               "wish to unsubscribe from the '%s' mailing list, simply do nothing,\n"
+               "and the request will not be processed.\n"
+               "\n"
+               "--__ctdlmultipart__\n"
+               "Content-type: text/html\n"
+               "<HTML><BODY>\n"
+               "Someone (probably you) has submitted a request to unsubscribe\n"
                "&lt;%s&gt; from the <B>%s</B> mailing list.<BR><BR>\n"
                "Please click here to confirm this request:<BR>\n"
-               "<A HREF=\"http://%s?room=%s&token=%s&cmd=confirm\">"
-               "http://%s?room=%s&token=%s&cmd=confirm</A><BR><BR>\n"
-               "If this request has been submitted in error and you do\n"
-               "<i>not</i> wish to unsubscribe from the "
-               "'%s' mailing list, simply do nothing,\n"
-               "and you will remain subscribed to the list.\n"
-               "</BODY></HTML>\n",
+               "<A HREF=\"%s?room=%s&token=%s&cmd=confirm\">"
+               "%s?room=%s&token=%s&cmd=confirm</A><BR><BR>\n"
+               "If this request has been submitted in error and you do not\n"
+               "wish to unsubscribe from the '%s' mailing list, simply do nothing,\n"
+               "and the request will not be processed.\n"
+               "</BODY></HTML>\n"
+               "\n"
+               "--__ctdlmultipart__--\n",
+
+               email, qrbuf.QRname,
+               webpage, urlroom, token,
+               qrbuf.QRname,
 
                email, qrbuf.QRname,
                webpage, urlroom, token,
@@ -292,6 +343,7 @@ void do_unsubscribe(char *room, char *email, char *webpage) {
 
        quickie_message(        /* This delivers the message */
                "Citadel",
+               NULL,
                email,
                NULL,
                confirmation_request,
@@ -344,7 +396,7 @@ void do_confirm(char *room, char *token) {
         * Now start scanning this room's netconfig file for the
         * specified token.
         */
-       assoc_file_name(filename, sizeof filename, &qrbuf, "netconfigs");
+       assoc_file_name(filename, sizeof filename, &qrbuf, ctdl_netcfg_dir);
        begin_critical_section(S_NETCONFIGS);
        ncfp = fopen(filename, "r+");
        if (ncfp != NULL) {
@@ -451,6 +503,7 @@ void do_confirm(char *room, char *token) {
         */
        if (success) {
                cprintf("%d %d operation(s) confirmed.\n", CIT_OK, success);
+               lprintf(CTDL_NOTICE, "Mailing list: %s %ssubscribed to %s with token %s\n", email, (strlen(address_to_unsubscribe) > 0) ? "un" : "", room, token);
        }
        else {
                cprintf("%d Invalid token.\n", ERROR + ILLEGAL_VALUE);