PHP mail() function not working is a common issue. A better solution is using the SMTP library. phpmailer is good SMTP mail library.
$sender = 'youremail@domain.tld'; $recipient = 'you@yourdomain.tld'; $subject = "Test mail"; $message = "some php test message"; $headers = 'From:' . $sender; if (mail($recipient, $subject, $message, $headers)){ echo "Message accepted"; }else { echo "mail function is not working"; }Most of the shared web server is blocking mail() function to reduce spam emails. You can see commonly mail() function emails are going to spam or junk folder.
Mail function Details:-
mail ( string$to
, string $subject
, string $message
[, mixed $additional_headers
)
It will return boolean (true or false)
How to configure SMTP library ?
Install phpmailer library using composer. First install composer, if you not installed in your system.composer require phpmailer/phpmailer
<?php require 'vendor/autoload.php'; // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // Load Composer's autoloader require 'vendor/autoload.php'; // Instantiation and passing `true` enables exceptions $mail = new PHPMailer(true); try { //Server settings $mail->SMTPDebug = 2; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'user@example.com'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to //Recipients $mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient $mail->addAddress('ellen@example.com'); // Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); // Attachments $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name // Content $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; }Just post your doubts here.