| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
| |
message (because of ADMINDB_PAGE_TEXT_LIMIT), join the strings with
the empty string, not newlines.
|
| |
|
|
|
|
| |
ApprovedDeleteMember(). When the user unsubscribes via her
options page, admin notification should follow the list's
setting.
|
| | |
|
| |
|
|
| |
email package to constructa proper MIME message.
|
| |
|
|
|
|
| |
RejectUrgentMessage.
TestTagger: many tests of the Tagger handler.
|
| |
|
|
|
|
|
|
| |
Postfix/DSN, and Netscape.
test_caiwireless(), test_microsoft(): I lost my samples of these
bounce formats, so added some really trivial (and mostly useless)
tests of these MTAs.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
is fine for our needs.
process(): Raise RejectMessage instead, and use the rejection text as
the value of the exception.
|
| |
|
|
| |
the field is missing, we get a valid list object.
|
| |
|
|
|
| |
get_all() call so that even if the field is missing, we get a
valid list object.
|
| |
|
|
| |
Russian translation easier.
|
| |
|
|
| |
such member' error.
|
| |
|
|
| |
handling "delayed" DSN reports.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
characters in keys, and it complains about the `@' signs in the
email addresses of AuthUser keys. So we'll obscure the email
address, changing `@' to `--at--', which contains only happy
characters.
This doesn't affect auto-guessing of the user based on the
presence of the cookie, because we just need to unobscure whatever
follows the `user+' prefix.
WebAuthenticate(): MMNotAMemberError -> NotAMemberError
MakeCookie(): Raise ValueError instead of MMBadUserError.
CheckCookie(): The prefix for AuthUser is listname+user+, and here's
where we unobscure anything we've found.
|
| |
|
|
|
|
|
|
|
|
| |
test for type isa StringType.
MsgSafeDict.__getitem__(): Fix the handling of missing header in the
`allmsg_' clause, so that it returns 'n/a' instead of trying to
join a bogus value.
MsgSafeDict.copy(): mimelib -> email.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RegisterBounce(): Use mm_cfg.days() to calculate days. Also, started
adding notes to help myself understand how this method works. :(
HandleBouncingAddress(): Get rid of the crufty mimetools based bounce
notification stuff in favor of using an email package based
scheme (i.e. using MIMEMessage() to encapsulate the triggering
message).
This also lets us change bounce.txt to not include any MIME crud.
BounceMessage(): Make `e' optional, and change the semantics so that
if it was given, it /is/ the bounce details; it is no longer an
object with a .details() method.
Also, handle the situation where msg has no Subject: header.
|
| | |
|
| |
|
|
| |
SafeDict class and the SecurityManager class.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
only contains the base class. Get SMTPPORT out of mm_cfg.py since
they must match (it has to set up a server listening on the same port
that SMTPDirect will try to connect to as a client).
tearDown(): Need this to close the server and call the base class
tearDown(), so that the port will be available for each subsequent
test.
|
| |
|
|
|
|
|
|
|
|
| |
sync's things up with Python 2.2's and mimelib's latest APIs. Two
primary differences:
- Fixed a bug in Message.get_all() that caused failobj to never be
returned.
- Added MIMEAudio class/module by Anthony Baxter
|
| | |
|
| |
|
|
|
|
|
|
| |
that's done in TestBase now.
Also, comment out the assertions about received_time. Clock skew
apparently makes this too unreliable (we could do an interval test,
but it's not worth it).
|
| |
|
|
|
|
| |
we're almost always going to want these. Also .Save() the list so
it's config.pck gets written out to disk (needed for the thru-smtp
tests which open the list in a separate process).
|
| |
|
|
| |
simulate a listening smtpd, reading in the message for comparsion.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
this work when mlist is None.
|
| | |
|
| | |
|
| |
|
|
|
| |
two subcolumns. Also, split the password entry fields into their
own pseudo-subcategory (like members).
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
the key. It's strictly interpreting the relevant RFC. We may
change Cookie.py to be more relaxed, but instead of trying to
maintain our own copy of this file, we'll just change the
separator to be a `+' intead of a `:' -- Cookie.py seems happy
with this.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Marshal is not guaranteed to be compatible across Python versions, and
while I'm not aware of any breakage since Py1.5.2, better to be
defensive here.
Specific changes include:
__save(): Dump the dict to the file as a binary cPickle. Do the dump
directly instead of dumping a string to fp.write() since -- I hope
-- cPickle doesn't suffer from the same problem as the comment
describes marshal as suffering from (I don't actually remember the
details of that).
__load(): Teach this method how to load .pck (i.e. config.pck) pickle
files, but retain the ability to load .db marshal files for
automatic upgrade. Also, add a catch of cPickle.PicklingError to
the big except clause.
Load(): Teach this how to load .pck and .db files, always defaulting
to .pck first. If the primary file was ever corrupt and we had to
load from the .last file, we'll make a copy of .last to a .safety
file just in case.
|
| |
|
|
| |
own category. Rearranged the two columns for better symmetry.
|
| |
|
|
| |
signature.
|
| | |
|
| | |
|
| | |
|
| | |
|