SMS not working when replace delay with millis

All the AT commands available for your particular modem will be in the reference material for the modem. About 90% of the commands are standardised across miss modem chipsets.

You only need to use those particular functions that your program needs.

BTW, another technique which I use, is a message queue, which allows me to push as many messages into the queue - as fast as the memory will allow, then the modem operates independently to actually send those messages with retries etc.

This non blocking method allows all those millis() timers to run while the modem sends the backlog of queued messages without slowing anything down.