atom socket , file
sequence data=" "
integer i=0,error_flag
procedure resetonerror()
data="RSET\r\n"
puts(socket,data)
data=gets(socket)
puts(1,data)
data="quit\r\n"
puts(socket,data)
data=gets(socket)
puts(1,data)
close(socket)
close(file)
puts(1,"Error in response , close connection .\n")
abort(1)
end procedure
procedure response()
data=gets(socket)
puts(1,data)
if data[1]>'3' then resetonerror() end if
while data[4]='-' do
data=gets(socket)
puts(1,data)
if data[1]>'3' then resetonerror() end if
end while
end procedure
file = open("mailbody","r")
if file=-1 then puts(1,"Error in openmailbody\n") abort(1) end if
data=gets(file)
puts(1,data)
i=match(":25",data)
while i=0 or data[1]='-' do
data=gets(file)
i=match(":25",data)
end while
data=data[1..i+3]
socket = open(data,"c")
if socket=-1 then puts(1,"Error in open server\n") abort(1) end if
response()
data = gets(file)
while upper(data[1])!='H' and upper(data[1])!='E' do
data=gets(file)
if not sequence(data) then exit end if
end while
if not sequence(data)
then
puts(1,"\n No Hello or Ehlo found !\n")
resetonerror()
abort(1)
else puts(socket,data)
response()
end if
data = gets(file)
while upper(data[1])='M' do
puts(socket,data)
response()
data = gets(file)
puts(socket,data)
response()
data = gets(file)
while upper(data[1])='R' do
puts(socket,data)
response()
data = gets(file)
end while
puts(socket,data)
response()
data=gets(file)
while data[1]!='.' do
puts(socket,data)
data=gets(file)
end while
puts(socket,data)
response()
data=gets(file)
if not sequence(data) or length(data)<10 then data="quit\r\n" end if
end while
puts(socket,data)
data=gets(socket)
puts(1,data)
close(socket)
close(file)
puts(1,"close connection\n")
abort(0)