I found the same problem. I edited two lines that looked like:
$reset_url = wp_login_url() . '?action=rp&key=' . $key . '&login=' . rawurlencode($user_login);
and
$login_url = $reset_pass_url = wp_login_url() . '?action=rp&key=' . $key . '&login=' . rawurlencode($user->user_login);
To make sure that either ‘?’ or ‘&’ is used appropriately. These lines now look like:
$reset_url = wp_login_url() . ((strpos(wp_login_url(),"?") !== false) ? "&" : "?") . 'action=rp&key=' . $key . '&login=' . rawurlencode($user_login);
and
$login_url = $reset_pass_url = wp_login_url() . ((strpos(wp_login_url(),"?") !== false) ? "&" : "?") . 'action=rp&key=' . $key . '&login=' . rawurlencode($user->user_login);
It would be nice if this, or a similar solution, could be adapted into the main SB Welcome Email plugin.
I’m open to any better suggestions.