anchor.diff:  					      {reuseaddr,true},
   					      binary]),
       smtp_expect(220, Port, "SMTP server does not respond"),
  -    smtp_put("MAIL FROM: " ++ From, Port),
  +    smtp_put( smtp_from(From), Port ),
       smtp_expect(250, Port, "Sender not accepted by mail server"),
       send_recipients(Recipients, Port),
       smtp_put("DATA", Port),
  
positive.code: 
  %%
  
  str2b64_end({[C1,C2],Out,N}) ->
      O1 = e(C1 bsr 2),
      O2 = e(((C1 band 16#03) bsl 4) bor (C2 bsr 4)),
      O3 = e((C2 band 16#0f) bsl 2),
      lists:reverse(Out, [O1,O2,O3,$=]);
  str2b64_end({[C1],Out,N}) ->
      O1 = e(C1 bsr 2),
      O2 = e((C1 band 16#03) bsl 4),
      lists:reverse(Out, [O1,O2,$=,$=]);
  str2b64_end({[],Out,N}) -> lists:reverse(Out);
  str2b64_end([]) -> [].
  
  %%
  
negative.code:     gen_tcp:send(Port, B64).
  
  boundary_date() ->
      dat2str_boundary(calendar:local_time()).
  
  dat2str_boundary({{Y, Mo, D}, {H, M, S}}) ->
      lists:flatten(
        io_lib:format("~s_~2.2.0w_~s_~w_~2.2.0w:~2.2.0w:~2.2.0w_~w",
  		    [weekday(Y,Mo,D), D, int_to_mt(Mo),
  		     Y,H,M,S,random:uniform(5000)])).
  
  
  smtp_init(Server, From, Recipients) ->
  