Dynamically adding fields to form
Did you check if the submit is called in your ajax request?

public function bulk_email_addfieldsubmit(array &amp;$form, FormStateInterface $form_state) {
    $num_users = $form_state-&gt;get('num_users') + 1;
    $form_state-&gt;set('num_users', $num_users);


If not, you can put this code in buildForm(). In this case you need to check if the triggering element is the correct one.

And another small issue, this line in buildForm():

$num_users = $form_state-&gt;getValue('num_users');


Should be get('num_users'), because getValue() is for user input.