Milter.utils.parse_header returns string, other py3 fixes
This commit is contained in:
+4
-2
@@ -34,7 +34,8 @@ class MilterConfigParser(ConfigParser):
|
||||
if q.startswith('file:'):
|
||||
domain = q[5:].lower()
|
||||
fname = os.path.join(dir,domain)
|
||||
d[domain] = d.setdefault(domain,[]) + open(fname,'r').read().split()
|
||||
with open(fname,'r') as fp:
|
||||
d[domain] = d.setdefault(domain,[]) + fp.read().split()
|
||||
else:
|
||||
user,domain = q.split('@')
|
||||
d.setdefault(domain.lower(),[]).append(user)
|
||||
@@ -52,7 +53,8 @@ class MilterConfigParser(ConfigParser):
|
||||
addr = addr.strip()
|
||||
if addr.startswith('file:'):
|
||||
fname = os.path.join(dir,addr[5:])
|
||||
for a in open(fname,'r').read().split():
|
||||
with open(fname,'r') as fp:
|
||||
for a in fp.read().split():
|
||||
d[a] = q
|
||||
else:
|
||||
d[addr] = q
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ class TestBase(object):
|
||||
|
||||
def getsymval(self,name):
|
||||
stage = self._stage
|
||||
if stage >= 0:
|
||||
if stage is not None and stage >= 0:
|
||||
syms = self._symlist[stage]
|
||||
if syms is not None and name not in syms:
|
||||
return None
|
||||
|
||||
+2
-1
@@ -216,7 +216,8 @@ def parse_header(val):
|
||||
u.append(s.decode())
|
||||
else:
|
||||
u.append(s.decode())
|
||||
u = u''.join(u)
|
||||
u = ''.join(u)
|
||||
if type(u) is str: return u
|
||||
for enc in ('us-ascii','iso-8859-1','utf-8'):
|
||||
try:
|
||||
return u.encode(enc)
|
||||
|
||||
@@ -108,10 +108,11 @@ import email
|
||||
from email.message import Message
|
||||
try:
|
||||
from email.generator import BytesGenerator
|
||||
from email import message_from_binary_file
|
||||
from email import message_from_binary_file, encoders
|
||||
except:
|
||||
from email.generator import Generator as BytesGenerator
|
||||
from email import message_from_file as message_from_binary_file
|
||||
from email import Encoders as encoders
|
||||
from email.utils import quote
|
||||
|
||||
if not getattr(Message,'as_bytes',None):
|
||||
@@ -534,7 +535,7 @@ def check_html(msg,savname=None):
|
||||
if htmlfilter.modified:
|
||||
msg.set_payload(out) # remove embedded scripts
|
||||
del msg["content-transfer-encoding"]
|
||||
email.Encoders.encode_quopri(msg)
|
||||
encoders.encode_quopri(msg)
|
||||
return Milter.CONTINUE
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
+4
-1
@@ -43,7 +43,10 @@ class AddrCacheTestCase(unittest.TestCase):
|
||||
def testParseHeader(self):
|
||||
s='=?UTF-8?B?TGFzdCBGZXcgQ29sZHBsYXkgQWxidW0gQXJ0d29ya3MgQXZhaWxhYmxlAA?='
|
||||
h = Milter.utils.parse_header(s)
|
||||
self.assertEqual(h,b'Last Few Coldplay Album Artworks Available\x00')
|
||||
self.assertEqual(h,'Last Few Coldplay Album Artworks Available\x00')
|
||||
s='=?iso-8859-1?Q?Peter_=D8rum?= <orum@ditas.dk>'
|
||||
h = Milter.utils.parse_header(s)
|
||||
self.assertEqual(h,'Peter \xd8rum <orum@ditas.dk>')
|
||||
|
||||
@unittest.expectedFailure
|
||||
def testParseAddress(self):
|
||||
|
||||
Reference in New Issue
Block a user