Cum obțin expeditorul corect cu mail() în PHP? SMTP
Dacă folosiți funcția mail() din PHP, expeditorul va fi numecont@numefirma.xx. Acest lucru nu poate fi modificat și va produce erori sau va face ca e-mailul să fie considerat spam.
Cel mai bine este să folosiți SMTP. Pe internet găsiți multe clase PHP gratuite pentru aceasta. Astfel, e-mailul este trimis prin SMTP, iar expeditorul poate fi stabilit simplu.
O opțiune foarte folosită este PHPMailer
În plus, puteți trimite e-mailuri direct prin SMTP și cu PEAR Mail. Acest lucru este util mai ales pentru formulare sau scripturi personalizate.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Exemplu: trimiterea unui e-mail SMTP cu PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Încărcare PEAR Mail
require_once 'Mail.php';
// Setări SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@domein.nl';
$smtp_pass = 'parola';
// Datele e-mailului
$to = 'destinatar@domein.nl';
$from = 'user@domein.nl';
$subject = 'Mesaj de test';
$body = 'Acesta este un e-mail de test trimis prin SMTP.';
$reply = 'user@domein.nl';
// Headers
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// Obiect SMTP
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Trimitere e-mail
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mail trimis cu succes';
endif;
