WORD GSM_SmtpSend(char * email, char * title, far char * body)
WORD GSM_SmtpSend(char * email, char * title, far char * body) { static BYTE index_email = 0; if(ModemGsm.Signal.Control.RcvMessage){ if(GSM_CompareMessage("+QSMTPDST: 0") && Gsm.ActualCommand == mcQSMTPDST){ index_email++; while(index_email != NUM_DEVICES_GPRS_SMTP){ if(strlen((const char *)TableAddressGPRS_SMTP[index_email].EmailRecipient) != 0){ break; } index_email++; } if(index_email == NUM_DEVICES_GPRS_SMTP){ Gsm.State = SMTP_TITLE_EMAIL; index_email = 0; } else{ Gsm.State = SMTP_RECIPIENT; } ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage("CONNECT") && Gsm.ActualCommand == mcQSMTPBODY ){ UART_PutData(MODEM, body, strlen((const char*)body)); UART_PutData(GSM_DEBUG, body, strlen((const char*)body)); Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage("+QSMTPBODY:")){ ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = SMTP_PUT_EMAIL; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage("+QSMTPPUT:") && Gsm.ActualCommand == mcQSMTPPUT ){ ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.Process = FALSE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 0; } else if(GSM_CompareMessage(GSMResponse[mrOK])){ switch(Gsm.ActualCommand){ case mcQSMTPDST: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 0; case mcQSMTPSUB: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = SMTP_BODY_EMAIL; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQSMTPBODY: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQSMTPPUT: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; } }
} switch(Gsm.State){ case SMTP_RECIPIENT: strcpy((char*)Gsm.CommandData, GSMCommand[mcQSMTPDST]); strcat((char*)Gsm.CommandData, "1,2,\""); while(index_email != NUM_DEVICES_GPRS_SMTP){ if(strlen((const char *)TableAddressGPRS_SMTP[index_email].EmailRecipient) != 0){ break; } index_email++; } if(index_email == NUM_DEVICES_GPRS_SMTP){ ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.Process = FALSE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; index_email = 0; API_CmdAnswer(&Packet, ERR_GSM_SmtpSend_NO_EMAIL); return 0; } strcat((char*)Gsm.CommandData, TableAddressGPRS_SMTP[index_email].EmailRecipient); strcat((char*)Gsm.CommandData, "\"\r"); Gsm.ActualCommand = mcQSMTPDST; ModemGsm.Signal.Control.SendCommand = TRUE; Gsm.State = NONE; break; case SMTP_TITLE_EMAIL: strcpy((char*)Gsm.CommandData, GSMCommand[mcQSMTPSUB]); VERSION_GetPN(bTemp); strcat((char*)Gsm.CommandData, "0,\""); strcat((char*)Gsm.CommandData, bTemp); strcat((char*)Gsm.CommandData, "\"\r"); Gsm.ActualCommand = mcQSMTPSUB; ModemGsm.Signal.Control.SendCommand = TRUE; Gsm.State = NONE; break; case SMTP_BODY_EMAIL: strcpy((char*)Gsm.CommandData, GSMCommand[mcQSMTPBODY]); Gsm.ActualCommand = mcQSMTPBODY; ModemGsm.Signal.Control.SendCommand = TRUE; Gsm.State = NONE; break; case SMTP_PUT_EMAIL: strcpy((char*)Gsm.CommandData, GSMCommand[mcQSMTPPUT]); Gsm.ActualCommand = mcQSMTPPUT; ModemGsm.Signal.Control.SendCommand = TRUE; Gsm.State = NONE; break; } return 1; }