Как сделать, чтобы письма не попадали в спам?
Правильно. И будут попадать. Функция mail у вас отправляет письма без DCKIM подписей. Самый простой способ - слать письмо по SMTP. А чтобы не говнокодить - подключите Phpmailer или Swiftmailer
Подключи библу как уже было сказано, на сервере формируй токен который будешь помещать в бд и ссылку на твой контроллер в письмо впихни, при переходе на этот контр, отправляй значение в бд, при этом меняя значение с 0 на 1...