First of all, don't reInvent the wheel, it's a wastage of time, money - everything. - If you want to stick with the WordPress' way, better be with a [Custom Post Type][1]. Create a custom post type for storing emails in its [postmeta][2]. - Make a form, and save the values to the CPT's postmeta - Make a [Menu Page][3] and do use the [Settings API][4] and make your email template settings. - As per the settings, send your emails through [`wp_mail()`][5] - If you want to make your own table, go with [$wpdb][6], and you know the rest I think this is it. But... Just read [this article][7] today, quoting from there on first hand: >*It is worth noting that the `mail()` function is not suitable for larger volumes of email in a loop. This function opens and closes an SMTP socket for each email, which is not very efficient.* > > *For the sending of large amounts of email, see the [» PEAR::Mail][8], and [» PEAR::Mail_Queue][9] packages.* There are many issues, you need to consider before reInventing the wheel: 1. Wastage of Time 2. Wastage of Money 3. You need a heavy mailer that doesn't ban (or make spam) your mails in the user end 4. You need email templates that supports various email clients, and behave normally 5. And so on... Better rely on a better plugin (plugin doesn't always mean that they are bad) or any 3rd party service. I know Mailchimp is a nicer solution. But there are many you can rely. [1]: https://codex.wordpress.org/Post_Types [2]: https://codex.wordpress.org/Custom_Fields [3]: https://codex.wordpress.org/Administration_Menus [4]: https://codex.wordpress.org/Settings_API [5]: https://developer.wordpress.org/reference/functions/wp_mail/ [6]: https://codex.wordpress.org/Class_Reference/wpdb [7]: https://www.smashingmagazine.com/2015/05/building-wordpress-notification-system/ [8]: http://pear.php.net/package/Mail [9]: http://pear.php.net/package/Mail_Queue