Search code examples
phpcodeigniteremailcodeigniter-4

Can't send server emails in CodeIgniter 4


I just hanged up to send server emails.

I'm preparing email sending code like this:

$email_config = Array(
    'charset' => 'utf-8',
    'mailType' => 'html'
);

$email = \Config\Services::email();
$email->initialize($email_config);

$email->setNewline("\r\n");
$email->setCRLF("\r\n");
$email->setFrom("[email protected]", "Sender name");

$email->setTo("[email protected]");
$email->setSubject("Test message");
$email->setMessage("Hello");

if ($email->send()) {
    echo "Email sent!";
} else {
    echo $email->printDebugger();
    return false;
}

It's showing this error message:

Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.
Date: Thu, 4 Jun 2020 05:21:47 -0500
From: "Sender name" <[email protected]>
Return-Path: <[email protected]>
Reply-To: <[email protected]>
User-Agent: CodeIgniter
X-Sender: [email protected]
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <[email protected]>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_5ed8cb3ba9e702.65790334"
=?UTF-8?Q?Test=20message?=
This is a multi-part message in MIME format.
Your email application may not support this format.

--B_ALT_5ed8cb3ba9e702.65790334
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hello


--B_ALT_5ed8cb3ba9e702.65790334
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hello

--B_ALT_5ed8cb3ba9e702.65790334--

And giving an error in error log:

Email: sendWithMail throwed Use of undefined constant INTL_IDNA_VARIANT_UTS46 - assumed 'INTL_IDNA_VARIANT_UTS46' (this will throw an Error in a future version of PHP)

I want to mention that,

  1. intl extension is enabled in server.
  2. I'm using cPanel.
  3. It was working fine on Codeigniter 3.
  4. The mail function is working with the row method in my server like this:
$to = '[email protected]';
$subject = 'Test message';
$message = 'Hello';
$headers = 'From: [email protected]' . "\r\n" .
        'Reply-To: [email protected]' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);

Please help.

Thanks in advance.


Solution

  • Got a solution from CI forum.

    From phpinfo() > intl > ICU version was 4.6 in my case. Which is too old.

    Updating that to the latest version worked for me.