Точно, когда гуглил проблему вчера видел что то с nopriv, и пытался вспомнить сегодня. Вроде бы должно было решить проблему, я добавил
add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );
вместо
add_action( 'wp_ajax_my_action', 'my_action_callback' );
но теперь даже если залогинен админом письмо не шлётся.
Нужно определять обязательно обычную и nopriv версии экшнов?