Hello guys! today i will teach you How to Create PDF file and send as attachment with email in PHP.
Creating a pdf file from mysql database and sending that dynamically generated pdf file as attachment with email is a very common feature in most of enterprise level of web application.
If any large web application we have to send email with dynamically generated pdf file for providing such type of data information.
In this tutorial we will discuss this topic in which we have learn how can we create dynamic pdf file from mysql database by using domPDF library and then after we will send that dynamically created pdf file will send as attachment with email using PHPMailer in PHP script.
So, here we have learn PHP send email with PDF attachment. I will describe how to fetch data from Mysql database and create PDF file from that data and attach that PDF file to an HTML email and lastly send it.

Insert this code in Index.ph
<?php
//index.php
$message = '';
$connect = new PDO("mysql:host=localhost;dbname=testing", "root", "");
function fetch_customer_data($connect)
{
$query = "SELECT * FROM tbl_customer";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$output = '| Name | Address | City | Postal Code | Country |
|---|---|---|---|---|
| ‘.$row[“CustomerName”].’ | ‘.$row[“Address”].’ | ‘.$row[“City”].’ | ‘.$row[“PostalCode”].’ | ‘.$row[“Country”].’ |
';
return $output;
}
if(isset($_POST["action"]))
{
include('pdf.php');
$file_name = md5(rand()) . '.pdf';
$html_code = '<link rel="stylesheet" href="bootstrap.min.css">';
$html_code .= fetch_customer_data($connect);
$pdf = new Pdf();
$pdf->load_html($html_code);
$pdf->render();
$file = $pdf->output();
file_put_contents($file_name, $file);
require 'class/class.phpmailer.php';
$mail = new PHPMailer;
$mail->IsSMTP(); //Sets Mailer to send message using SMTP
$mail->Host = 'smtpout.secureserver.net'; //Sets the SMTP hosts of your Email hosting, this for Godaddy
$mail->Port = '80'; //Sets the default SMTP server port
$mail->SMTPAuth = true; //Sets SMTP authentication. Utilizes the Username and Password variables
$mail->Username = 'xxxxxxxxxx'; //Sets SMTP username
$mail->Password = 'xxxxxxxxxx'; //Sets SMTP password
$mail->SMTPSecure = ''; //Sets connection prefix. Options are "", "ssl" or "tls"
$mail->From = 'itsourcecode.com'; //Sets the From email address for the message
$mail->FromName = 'itsourcecode.com'; //Sets the From name of the message
$mail->AddAddress('[email protected]', 'Name'); //Adds a "To" address
$mail->WordWrap = 50; //Sets word wrapping on the body of the message to a given number of characters
$mail->IsHTML(true); //Sets message type to HTML
$mail->AddAttachment($file_name); //Adds an attachment from a path on the filesystem
$mail->Subject = 'Customer Details'; //Sets the Subject of the message
$mail->Body = 'Please Find Customer details in attach PDF File.'; //An HTML or plain text message body
if($mail->Send()) //Send an Email. Return true on success or false on error
{
$message = '<label class="text-success">Customer Details has been send successfully...</label>';
}
unlink($file_name);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Create Dynamic PDF Send As Attachment with Email in PHP</title>
http://jquery.min.js
<link rel="stylesheet" href="bootstrap.min.css" />
http://bootstrap.min.js
</head>
<body>
<br />Create Dynamic PDF Send As Attachment with Email in PHP
<br /> <br /> </body> </html>
Add this code in pdf.php
<?php
//pdf.php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
class Pdf extends Dompdf{
public function __construct(){
parent::__construct();
}
}
?>If you have any comments or suggestions about How to Create PDF file and send as attachment with email in PHP Message us directly:
Download Source code here:
Technology stack and requirements
To run this PHP project, you need these tools on your development machine:
- XAMPP or WAMP server. Bundles Apache, MySQL, and PHP so you can run PHP on Windows without individual installs. Free from apachefriends.org.
- PHP 8.0 or higher. Included with XAMPP. Older versions (5.x, 7.x) may work but modern PHP features improve security and performance.
- MySQL or MariaDB. Comes with XAMPP. phpMyAdmin manages the database through a browser UI.
- VS Code or PhpStorm. Free code editor with PHP syntax highlighting, IntelliSense, and debugging support.
- Web browser. Chrome, Firefox, or Edge for testing the running app.
Installing the source code
- Download the archive. Get the ZIP file from the download link on this page and extract it.
- Move to htdocs. Place the extracted folder inside C:\xampp\htdocs\ so Apache can serve it.
- Import the database. Open http://localhost/phpmyadmin, click Import, and select the .sql file included in the archive.
- Update database credentials. Open the config.php or connection.php file and set the correct database name, username, and password (default XAMPP: root / empty password).
- Run the project. Start Apache + MySQL in XAMPP, then visit http://localhost/your-project-folder/ in a browser.
Using this project for your BSIT capstone
This PHP project maps cleanly to standard BSIT capstone documentation. Suggested chapter alignment:
- Chapter 1 (Introduction). Discuss the problem the system solves in real-world context. Cite Philippine business or academic use cases where a manual process could be replaced.
- Chapter 2 (Review of Related Literature). Compare this system’s features against 5-10 similar published projects. Cite journals like IJERT or IEEE Access for academic-standard sources.
- Chapter 3 (Methodology). Include Use Case Diagram, Data Flow Diagram, Entity Relationship Diagram, and Activity Diagram covering all major workflows.
- Chapter 4 (Results and Discussion). Screenshot each module of the running system with a caption explaining what data it processes and which user role interacts with it.
- Chapter 5 (Conclusion and Recommendations). Identify features that could be added in a Version 2, such as mobile app, REST API export, or AI-powered analytics.
Modules typical of How to Create PDF File and Send as Attachment With Email
- Master data. CRUD forms for the primary entities with search and filter.
- Transaction processing. Data entry forms for day-to-day operations the system automates.
- Reports. Formatted printable output summarizing activity per day, user, or category.
- User management. Login with role-based permissions (Admin, Encoder, Viewer).
- Backup and restore. Export database to a .sql file and restore when needed.
Common enhancements for capstone review
- Modernize the UI. Add Bootstrap 5 or Tailwind CSS for a polished appearance.
- Add printable receipts. Use TCPDF or FPDF to generate PDF reports.
- Multi-user concurrency. Ensure database handles simultaneous writes without lost-update errors.
- Rewrite in Laravel. Migrate to Laravel for maintainability and modern development patterns.
Official documentation
Frequently Asked Questions
What does this PHP tutorial cover?
Focused PHP language or library tutorial showing a single concept with working code. Use as a building block when assembling a larger system.
What PHP and MySQL versions does this project require?
Most projects in this batch run on PHP 7.4 to PHP 8.2 with MySQL 5.7+ or MariaDB 10+. A few older projects need PHP 5.6 (deprecated, use XAMPP 7.x). To run: install XAMPP / WAMP / Laragon, extract project to htdocs, import the included .sql file via phpMyAdmin, edit the connection file (usually config.php or db_connect.php) with your DB credentials, browse to the project URL in your browser.
How do I set up the database for this PHP project?
Open phpMyAdmin (http://localhost/phpmyadmin/ on XAMPP), create a new empty database with the name specified in the project’s config.php. Click the Import tab, choose the included .sql file, click Go. Then edit config.php (or includes/connection.php) with: ‘localhost’, your MySQL username (usually ‘root’), your MySQL password (usually blank for XAMPP), and the database name.
Can I use this PHP project for a BSIT capstone or thesis?
Yes, but extend it. A bare CRUD app is too narrow for full capstone scope. Add: user roles via session checks, reports/dashboards (Chart.js + AJAX), PDF exports (TCPDF library), email notifications (PHPMailer), real domain extension (analytics, audit log, multi-branch support). Pair with Chapter 1-5 documentation matching your panel’s rubric.
Why am I getting ‘connection error’ or ‘undefined function mysqli_connect’?
Three common PHP issues: (1) Connection error: Apache + MySQL services not running in XAMPP control panel, OR database name in config.php does not match what you created in phpMyAdmin. (2) ‘undefined function mysqli_connect’: MySQL extension not enabled, in php.ini uncomment extension=mysqli (then restart Apache). (3) ‘No such file or directory’: MySQL socket path wrong, use 127.0.0.1 instead of localhost in the connection string.
Where can I find more PHP projects with source code?
Browse the PHP Projects hub for the full library (300+ vanilla PHP systems). For modern PHP MVC alternatives see Laravel Projects (74 systems) or CodeIgniter Projects (32 systems). For BSIT-focused capstone idea lists see 150 Best Capstone Project Ideas.