Rex::MIME::Message can now parse as well as write
git-svn-id: file:///home/svn/framework3/trunk@9257 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
d33dc27e26
commit
14363ca2e8
|
@ -25,7 +25,7 @@ class Header
|
||||||
end
|
end
|
||||||
|
|
||||||
var,val = line.split(':')
|
var,val = line.split(':')
|
||||||
self.headers << [ var.strip, val.strip ]
|
self.headers << [ var.to_s.strip, val.to_s.strip ]
|
||||||
prev = self.headers.length - 1
|
prev = self.headers.length - 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -73,3 +73,4 @@ class Header
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,35 @@ class Message
|
||||||
|
|
||||||
attr_accessor :header, :parts, :bound, :content
|
attr_accessor :header, :parts, :bound, :content
|
||||||
|
|
||||||
def initialize
|
def initialize(data=nil)
|
||||||
self.header = Rex::MIME::Header.new
|
self.header = Rex::MIME::Header.new
|
||||||
self.parts = []
|
self.parts = []
|
||||||
self.bound = "_Part_#{rand(1024)}_#{rand(0xffffffff)}_#{rand(0xffffffff)}"
|
self.bound = "_Part_#{rand(1024)}_#{rand(0xffffffff)}_#{rand(0xffffffff)}"
|
||||||
self.content = ''
|
self.content = ''
|
||||||
|
if data
|
||||||
|
head,body = data.split(/\r?\n\r?\n/, 2)
|
||||||
|
|
||||||
|
self.header.parse(head)
|
||||||
|
ctype = self.header.find('Content-Type')
|
||||||
|
|
||||||
|
if ctype and ctype[1] and ctype[1] =~ /multipart\/mixed;\s*boundary=([^\s]+)/
|
||||||
|
self.bound = $1
|
||||||
|
|
||||||
|
chunks = body.to_s.split(/--#{self.bound}(--)?\r?\n/)
|
||||||
|
self.content = chunks.shift.to_s.gsub(/\s+$/, '')
|
||||||
|
|
||||||
|
chunks.each do |chunk|
|
||||||
|
break if chunk == "--"
|
||||||
|
head,body = chunk.split(/\r?\n\r?\n/, 2)
|
||||||
|
part = Rex::MIME::Part.new
|
||||||
|
part.header.parse(head)
|
||||||
|
part.content = body.gsub(/\s+$/, '')
|
||||||
|
self.parts << part
|
||||||
|
end
|
||||||
|
else
|
||||||
|
self.content = body.to_s.gsub(/\s+$/, '')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def to
|
def to
|
||||||
|
@ -102,7 +126,9 @@ class Message
|
||||||
msg << part.to_s
|
msg << part.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.parts.length > 0
|
||||||
msg << "--" + self.bound + "--\r\n"
|
msg << "--" + self.bound + "--\r\n"
|
||||||
|
end
|
||||||
|
|
||||||
msg
|
msg
|
||||||
end
|
end
|
||||||
|
@ -110,3 +136,4 @@ class Message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue