Konnichiwa, Alexey Rusakov, вы писали:

On 29.09.2005 14:08, Arioch wrote:

Alexey Rusakov пишет:

Неужели так сложно пихать в каждое письмо линк неважно куда,

На Гугл? На Яндекс? На Луну?
Толку от линка неважно-куда ?

Я о технической реализуемости. Просто, имхо, не должно быть сложно состряпать линк из некоторого шаблона, подставив туда MessageID.

не зная о существовании этого линка?

Я не уверен, что почтовый сервер может надежно угадать, под каким номером позже совсем другая прога его в архив положит.

Здрасте, а MessageID совсем другая прога зачитать не в состоянии? И использовать его в качестве первичного ключа.

Подобный костыль подойдет?
Для каждого письма из html архива(по абсолютному пути) создается симлинк в /%(archive_list)s/msgid/%(Message-ID этого письма)s.html. Также добавляет переменые msgid (Message-ID текущего письма) и web_archive (url архива списка) в словарь для подписей mailman'a. Т.е. если добавить в подпись 'Адрес этого сообщения в Web: %(web_archive)smsgid%(cgiext)s/%(msgid)s.html' то все будет нормально :-\
Правда не знаю в каком виде это в дайджесах писать :\
diff -ur /tmp/mailman/Mailman/Archiver/HyperArch.py 
/usr/share/mailman/Mailman/Archiver/HyperArch.py
--- /tmp/mailman/Mailman/Archiver/HyperArch.py  2005-05-13 15:35:37 +0400
+++ /usr/share/mailman/Mailman/Archiver/HyperArch.py    2005-10-10 16:48:56 
+0400
@@ -1087,6 +1087,12 @@
         f.write(article.as_html())
         f.close()
 
+       if not os.path.exists(self.basedir + '/msgid/'):
+           os.makedirs(self.basedir + '/msgid/', mode=0775)
+       path_symlink = '%s/msgid/%s.html' % (self.basedir, article.msgid)
+       if not os.path.exists(path_symlink):
+           os.symlink(path, path_symlink)
+
         # Write the text article to the text archive.
         path = os.path.join(self.basedir, "%s.txt" % index)
         omask = os.umask(002)
diff -ur /tmp/mailman/Mailman/Gui/Digest.py 
/usr/share/mailman/Mailman/Gui/Digest.py
--- /tmp/mailman/Mailman/Gui/Digest.py  2002-02-27 03:04:51 +0300
+++ /usr/share/mailman/Mailman/Gui/Digest.py    2005-10-10 19:24:51 +0400
@@ -27,6 +27,7 @@
 # to this.
 ALLOWEDS = ('real_name', 'list_name', 'host_name', 'web_page_url',
             'description', 'info', 'cgiext', '_internal_name',
+           'msgid', 'web_archive',
             )
 
 
diff -ur /tmp/mailman/Mailman/Handlers/Decorate.py 
/usr/share/mailman/Mailman/Handlers/Decorate.py
--- /tmp/mailman/Mailman/Handlers/Decorate.py   2005-05-13 06:38:17 +0400
+++ /usr/share/mailman/Mailman/Handlers/Decorate.py     2005-10-10 19:38:52 
+0400
@@ -39,7 +39,7 @@
     # Digests and Mailman-craft messages should not get additional headers
     if msgdata.get('isdigest') or msgdata.get('nodecorate'):
         return
-    d = {}
+    d = {'msgid': msg.get('Message-Id', '<[EMAIL PROTECTED]>').strip()[1:-1]}
     if msgdata.get('personalize'):
         # Calculate the extra personalization dictionary.  Note that the
         # length of the recips list better be exactly 1.
@@ -203,6 +203,7 @@
                   'description'   : mlist.description,
                   'info'          : mlist.info,
                   'cgiext'        : mm_cfg.CGIEXT,
+                 'web_archive'   : mlist.GetBaseArchiveURL(),
                   })
     d.update(extradict)
     # Using $-strings?
_______________________________________________
smoke-room mailing list
[email protected]
https://lists.altlinux.ru/mailman/listinfo/smoke-room

Ответить