Como obtenho o remetente correto com mail() em PHP? SMTP
Se usar a função mail() do PHP, o remetente será nomedaconta@uwdomein.xx. Isto não pode ser alterado e vai gerar erros ou fazer com que o e-mail seja considerado spam.
O melhor é usar SMTP. Na Internet encontra muitas classes PHP gratuitas para isso. O e-mail é então enviado via SMTP e o remetente pode ser definido facilmente.
Uma opção muito usada é o PHPMailer
Além disso, também é possível enviar e-mail diretamente via SMTP com o PEAR Mail. Isto é especialmente útil em formulários ou scripts à medida.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Exemplo: enviar e-mail SMTP com o PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Carregar o PEAR Mail
require_once 'Mail.php';
// Definições SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'palavra-passe';
// Dados do e-mail
$to = 'destinatario@domein.nl';
$from = 'user@domein.nl';
$subject = 'Mensagem de teste';
$body = 'Este é um e-mail de teste enviado via SMTP.';
$reply = 'user@domein.nl';
// Cabeçalhos
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// Objeto SMTP
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Enviar o e-mail
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mail enviado com sucesso';
endif;
