Sending email by key to non-user
Just because EmailService::sendEmailByKey() requires you to pass in a UserModel, doesn’t mean that the model has to represent an actual saved user. You can create one on the spot for them:

$user = new UserModel();
$user-&gt;email = 'sergster@abc.xyz';
$user-&gt;firstName = 'John'; // optional
$user-&gt;lastName = 'Doe'; // optional

craft()-&gt;email-&gt;sendEmailByKey($user, 'my_key', $variables);