// Send sub
char SendStr(char s,char *b){if(Write(s,b,StrLen(b))<0)return -2;
WaitWriteComplete(s);return 0;}
// SMTP handler (with SMTP auth)
char SmtpHandler(char soc, char *ss_ipadrs, int onoff)
{
int len; char *recbuf, *sendbuf;
char *Subject="Kuro-box is booting!!";
char *MsgBodyon="Kuro-box is booting!! Wait for 2min. to access!\r\n";
char *MsgBodyoff="Kuro-box is down.\r\n";
char *MailName="ColdFire";


 if(SmtpState)
 {if((len=Read(soc,2000))<0)return -1;recbuf=GetReceiveBuffer(soc,1);
//  PrStr(recbuf);
  if(*recbuf!='3'&&*recbuf!='2'){MemoryFree(recbuf);return -4;}
 }
 MemoryFree(recbuf);

 switch(SmtpState){
 case 1:
  if(SendStr(soc,"HELO OS1\r\n")<0)return -2;
  if(*SmtpName)SmtpState++;else SmtpState=6;break;
 case 2:
  if(SendStr(soc,"AUTH LOGIN\r\n")<0)return -2;SmtpState++;break;
 case 3:
  sendbuf=MemoryAlloc(128);BASE64::Enc64(sendbuf,SmtpName);
  StrCat(sendbuf,"\r\n");if(SendStr(soc,sendbuf)<0)return -2;
  MemoryFree(sendbuf);SmtpState++;break;
 case 4:
  sendbuf=MemoryAlloc(128);BASE64::Enc64(sendbuf,SmtpPass);
  StrCat(sendbuf,"\r\n");if(SendStr(soc,sendbuf)<0)return -2;
  MemoryFree(sendbuf);SmtpState++;break;
 case 5:
  if(SendStr(soc,"RSET\r\n")<0)return -2;SmtpState++;break;
 case 6:
  sendbuf=MemoryAlloc(StrLen(MailFrom)+15);
  StrCpy(sendbuf,"MAIL FROM:<");StrCat(sendbuf,MailFrom);
  StrCat(sendbuf,">\r\n");if(SendStr(soc,sendbuf)<0)return -2;
  MemoryFree(sendbuf);SmtpState++;break;
 case 7:
  sendbuf=MemoryAlloc(StrLen(MailTo)+13);
  StrCpy(sendbuf,"RCPT TO:<");StrCat(sendbuf,MailTo);
  StrCat(sendbuf,">\r\n");if(SendStr(soc,sendbuf)<0)return -2;
  MemoryFree(sendbuf);SmtpState++;break;
 case 8:
  if(SendStr(soc,"DATA\r\n")<0)return -2;SmtpState++;break;
 case 9:
  sendbuf=MemoryAlloc(StrLen(MailTo)+8);
  StrCpy(sendbuf,"To:<");StrCat(sendbuf,MailTo);StrCat(sendbuf,">\r\n");
  if(SendStr(soc,sendbuf)<0)return -2;MemoryFree(sendbuf);
  sendbuf=MemoryAlloc(StrLen(MailName)+StrLen(MailFrom)+12);
  StrCpy(sendbuf,"From: ");StrCat(sendbuf,MailName);StrCat(sendbuf," <");
  StrCat(sendbuf,MailFrom);StrCat(sendbuf,">\r\n");
  if(SendStr(soc,sendbuf)<0)return -2;MemoryFree(sendbuf);
//  sendbuf=MemoryAlloc(StrLen(Subject)+14);StrCpy(sendbuf,"Subject: ");
  sendbuf=MemoryAlloc(StrLen(Subject)+14);StrCpy(sendbuf,"Subject: http://");
//  StrCat(sendbuf,Subject);StrCat(sendbuf,"\r\n\r\n");
  StrCat(sendbuf,ss_ipadrs);StrCat(sendbuf,"\r\n\r\n");
  if(SendStr(soc,sendbuf)<0)return -2;MemoryFree(sendbuf);
  if(onoff == 0){
	  if(SendStr(soc,MsgBodyon)<0)return -2;
  }
  else if(onoff == 1){
	  if(SendStr(soc,MsgBodyoff)<0)return -2;
  }

  if(SendStr(soc,"\r\n.\r\n")<0)return -2;SmtpState++;break;

 case 10:
  if(SendStr(soc,"QUIT\r\n")<0)return -2;SmtpState++;break;
 case 11:
  SmtpState=0;
  return 1;
 }
 return 0;
}
