Senhor, o Google é seu amigo. Em resumo, não há uma resposta simples para sua pergunta. A entrega de e-mail não é muito trivial, especialmente porque não depende inteiramente da sua programação.
99% é culpa do seu host. Se você estiver em VPS ou em hospedagem compartilhada - você pode esquecer isso, pois está herdando a reputação de outras 300 pessoas usando o mesmo servidor.
Se você possui seu servidor, verifique sua reputação de IP e, em seguida, imagine que você precisará de 2 a 3 meses de e-mail impecável para começar a receber.
Se você tem 5 mil para gastar em um mês, use ReturnPath OU apenas alguém como CampaignMonitor ou MailChimp ESPs para entregar seus e-mails.
DEBUG: Se você tiver acesso root/shell, tente o seguinte:
- "dig mx yahoo.com" do shell
- copie a primeira ou a segunda resposta autorizada
- telnet (IP/domínio) 25
- manualmente emular conversa SMTP assim
- Cole o que o servidor de e-mail do Yahoo informa aqui
P.S. Se você está entrando na pasta de spam, parabéns! Normalmente, seu e-mail será descartado no nível SMTP, silenciosamente. Pior ainda, você receberá erros SMTP adiados do Yahoo:isso significa que eles o estrangulam porque não têm dados suficientes sobre suas taxas de reclamação.
P.P.S. Configure os registros DNS para incluir SPF e também envie a assinatura DKIM para seu MTA. Isso ajudará muito quando você tentar provar sua legitimidade.
P.P.P.S. Use http://www.senderbase.org/ para procurar seu IP primeiro.
Boa sorte.