Как лучше отправлять нотификации из php?
mail(). Функция пнёт sendmail, который просто положит сообщение в очередь для последующей обработки демоном (sendmail, qmail, postfix, you name it) и быстренько вернёт управление приложению. А установка SMTP-соединения с удалённым хостом типа Яндекса и Гугля — довольно тормозная операция, как показывает практика.
Через внешние хорошо, но можете напороться на ограничене по количеству исходящих в единицу времени (в частности у гугла так). Лучше использовать свой почтовый сервер (если есть). Однако при таком раскладе можете попасть в спам-лист, с такой-то частотой.