How to check mail is read or not in php

In PHP, you can check if an email has been read or not using the imap extension, which allows you to connect to an IMAP (Internet Message Access Protocol) server and retrieve information about emails.

Here's an example of how you can check if an email has been read or not:

<?php

// Connect to the IMAP server
$imap = imap_open('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'your_password');

// Search for the email you want to check
$search = imap_search($imap, 'SUBJECT "Your Email Subject"');

// Get the email's message number
$message_number = $search[0];

// Get the email's flags (e.g. read, unread, etc.)
$flags = imap_fetchheader($imap, $message_number, 'FLAGS');

// Check if the email has been read
if (strpos($flags, '\\Seen')!== false) {
    echo "The email has been read.";
} else {
    echo "The email has not been read.";
}

// Close the IMAP connection
imap_close($imap);

?>

In this example, we connect to the IMAP server using the imap_open function, and then search for the email we want to check using the imap_search function. We then get the email's message number and flags using the imap_fetchheader function.

The \\Seen flag indicates that the email has been read. If the email has been read, the \\Seen flag will be present in the flags string. If the email has not been read, the \\Seen flag will not be present.

Note that this method only works if the email server supports IMAP and the email account has IMAP enabled. Additionally, some email providers may not allow you to access the email's read status using IMAP.

Alternatively, you can use the imap_check function to check if an email has been read or not. This function returns an array containing information about the email, including its flags. You can then check if the \\Seen flag is present in the flags array to determine if the email has been read.

<?php

// Connect to the IMAP server
$imap = imap_open('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', 'your_password');

// Search for the email you want to check
$search = imap_search($imap, 'SUBJECT "Your Email Subject"');

// Get the email's message number
$message_number = $search[0];

// Get the email's flags
$flags = imap_check($imap, $message_number);

// Check if the email has been read
if (isset($flags['seen'])) {
    echo "The email has been read.";
} else {
    echo "The email has not been read.";
}

// Close the IMAP connection
imap_close($imap);

?>

This method is similar to the previous one, but it uses the imap_check function to get the email's flags instead of imap_fetchheader.