How to Take a screenshot of any webpage and send it as an email in PHP
Published: 2023-09-14 04:48:40

In today's digital age, capturing screenshots has become an integral part of our daily lives. Whether it's preserving a hilarious meme or archiving a crucial document, screenshots play a pivotal role. This article delves into the process of taking a webpage screenshot using PHP, a server-side scripting language renowned for web development, enabling the creation of dynamic web pages and applications, and interactions with databases.

**Installing Necessary Libraries:**

Before we embark on the journey of capturing web screenshots with PHP, we need to install the essential libraries. We'll employ the PHP PhantomJS library, a headless browser designed for web page screenshot capture. Begin by installing this library via Composer, a popular PHP dependency manager:

`composer require jonnyw/php-phantomjs`

**Taking a Webpage Screenshot:**

Now, let's delve into the code that captures a screenshot of a webpage using PHP PhantomJS. Below is an illustrative example:

```
use JonnyW\PhantomJs\Client;

$client = Client::getInstance();
$request = $client->getMessageFactory()->createRequest('https://checkmepcobill.pk', 'GET');
$response = $client->getMessageFactory()->createResponse();

$client->send($request, $response);

if ($response->getStatus() === 200) {
    $imageData = $response->getContent();
    file_put_contents('screenshot.png', $imageData);
}
```
In this script, we initiate the PHP PhantomJS Client and create an HTTP request to the '[https://checkmepcobill.pk](https://checkmepcobill.pk)' webpage. The request is set to 'GET' to fetch the webpage content.

Subsequently, an HTTP response is generated, and the request is dispatched using the Client's send() method. If the response status code is 200 (indicating success), the content of the response, which is the screenshot, is saved to a file named 'screenshot.png' using **file_put_contents()**.

**Using the Screenshot: Sending via Email:**

Let's explore a practical application of this code: taking a screenshot of a webpage and sending it via email. In this scenario, we've implemented this functionality on an electricity duplicate [billing ](https://pescobilling.pk/)website to capture customers' electricity bills and send them as email attachments:

```

use JonnyW\PhantomJs\Client;
use PHPMailer\PHPMailer\PHPMailer;

$client = Client::getInstance();
$request = $client->getMessageFactory()->createRequest('https://checkmepcobill.pk', 'GET');
$response = $client->getMessageFactory()->createResponse();

$client->send($request, $response);

if ($response->getStatus() === 200) {
    $imageData = $response->getContent();
    file_put_contents('screenshot.png', $imageData);

    $mail = new PHPMailer(true);
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'your_email@gmail.com';
    $mail->Password = 'your_email_password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    $mail->setFrom('your_email@gmail.com', 'Your Name');
    $mail->addAddress('recipient_email@example.com');
    $mail->addAttachment('screenshot.png', 'Screenshot.png');
}
```
In this extended example, we not only capture the screenshot but also send it via email using the PHPMailer library. The captured screenshot is attached to the email, providing a versatile and practical use case for web screenshot capture using PHP.

By following these steps, you can harness the power of PHP to seamlessly capture web screenshots and incorporate them into various applications, enhancing your digital toolkit.