O PHP posusi a função mail, porém ela é simples demais, e só é possível usar SMTP local. Ou seja, pra testar em localhost, você precisa instalar e configurar (muito bem) um servidor SMTP. E isso dá muito trabalho.
Outro lado negativo da função mail
é a necessidade de definir manualmente todos os cabeçalhos da mensagem. E eles devem ser preenchidos perfeitamente, pois eles são usados por servidores de emails como principal forma de identificação de spam. Mensagens com cabeçalhos fracos e incompletos têm alta probabilidade de serem consideradas spam.
Para facilitar o envio de e-mails, foi criada a classe PHPMailer, que possui excelente configuração de cabeçalhos, além de facilitar tarefas meio chatas, como anexar arquivos nas mensagens.