Are there any best practices for embedding images in emails using PHP?

When embedding images in emails using PHP, it is best practice to use the CID (Content-ID) method to reference the image within the email content. This involves encoding the image data and inserting it as a MIME part with a unique CID identifier. By doing this, the image will be displayed correctly across different email clients without any broken image links.

// Path to the image file
$imagePath = 'path/to/image.jpg';

// Read the image file
$imageData = file_get_contents($imagePath);

// Encode the image data
$encodedImage = base64_encode($imageData);

// Define the CID
$cid = md5(uniqid(time()));

// Create the email content with the embedded image
$emailContent = '
    <html>
    <body>
        <img src="cid:' . $cid . '" />
    </body>
    </html>
';

// Define the email headers
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-Type: multipart/related; boundary=\"boundary\"\r\n";
$headers .= "\r\n--boundary\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n";
$headers .= "\r\n$emailContent\r\n";
$headers .= "--boundary\r\n";
$headers .= "Content-Type: image/jpeg\r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-ID: <$cid>\r\n";
$headers .= "\r\n$encodedImage\r\n";
$headers .= "--boundary--";

// Send the email
mail('recipient@example.com', 'Subject', '', $headers);