Как правило, храните сообщения в базе данных со схемой категоризации (это псевдокод):
TABLE message {
id,
created_timestamp,
user_id,
sent,
type (sms, email, etc),
content
}
Затем каждый день, скажем, в полночь, ВЫБИРАЙТЕ все сообщения, где отправлено = 0 и user_id =, и объедините их в одно сообщение, отправьте его с помощью метода указанного типа и отметьте все как отправленное = 1.
Вы сможете просмотреть набор исторических сообщений, просто выбрав сообщения, где отправлено = 1.