Я написал такую систему, но после того как код был написан, я задал себе вопрос, всё ли я сделал правильно или как вообще правильно ?
Стоит поподробнее описать как вы сделали, из описания не очень понятно, как вы реализовали это функцию, также непонятно что рассылает система и какой язык вам нужен для кода.
Если это система рассылки писем на электронную почту и вам не нужно спамить на миллионы адресов, то можно оформить в небольшой модуль, в котором есть класс или функция для создания ящика отправителя с именем паролем, функция для отправки по определенному адресу.
Я так понимаю нужно использовать базу данных, в которой нужно хранить состояние рассылки для конкретного пользователя по полю(телефон/почта) и из этой базы можно было бы брать данные и отменять запланированные задачи по рассылке для пользователя.
В целом да, лучше создать нужные таблицы в БД и брать данные для отправки оттуда. Планировщик лучше сделать внутри приложения, который при наступлении определенного времени будет делать запрос в БД, получать список людей, которым нужно отправить письмо и затем отправлять.