1. Go to this page and download the library: Download popphp/pop-mail library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
popphp / pop-mail example snippets
use Pop\Mail\Message;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Mailgun;
// Create the transport and mailer objects
$transport = new Mailgun([
'api_url' => 'MAILGUN_API_URL',
'api_key' => 'MAILGUN_API_KEY',
]);
$mailer = new Mailer($transport);
// Create the message object
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
// Send the message
$mailer->send($message);
use Pop\Mail\Message;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Smtp;
$smtpOptions = [
'host' => 'SMTP_HOST_DOMAIN',
'port' => 'SMTP_PORT',
'username' => 'SMTP_USERNAME',
'password' => 'SMTP_PASSWORD',
'encryption' => 'SMTP_ENCRYPTION'
];
// Create the transport and mailer objects
$transport = new Smtp($smtpOptions);
$mailer = new Mailer($transport);
// Create the message object
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
// Send the message
$mailer->send($message);
use Pop\Mail\Message;
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
use Pop\Mail\Message;
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->addText('Hello World! This is a text body!');
$message->addHtml('<html><body><h1>Hello World!</h1><p>This is an HTML body!</p></body></html>');
use Pop\Mail\Message;
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
$message->attachFile(__DIR__ . '/image.jpg');
use Pop\Mail\Message;
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
$message->attachFileFromStream($fileContents, 'filename.pdf');
use Pop\Mail\Message;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendmail;
$transport = new Sendmail();
$mailer = new Mailer($transport);
$message = new Message('My Message Subject');
$message->setTo('[email protected]');
$message->setFrom('[email protected]');
$message->setBody('Hello World! This is a text body!');
$mailer->send($message);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Mailgun;
$mailgunOptions = [
'api_url' => 'MAILGUN_API_URL',
'api_key' => 'MAILGUN_API_KEY',
];
$transport = new Mailgun($mailgunOptions);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendgrid;
$sendgridOptions = [
'api_url' => 'SENDGRID_API_URL',
'api_key' => 'SENDGRID_API_KEY',
];
$transport = new Sendgrid($sendgridOptions);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Office365;
$transport = new Office365();
$transport->createClient([
'client_id' => 'O365_CLIENT_ID',
'client_secret' => 'O365_CLIENT_SECRET',
'scope' => 'O365_SCOPE',
'tenant_id' => 'O365_TENANT_ID',
'account_id' => 'O365_ACCOUNT_ID',
]);
// Fetch the token and its expiration to be stored with your application for future use
$transport->requestToken();
$accessToken = $transport->getToken();
$tokenExpires = $transport->getTokenExpires();
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Office365;
$transport = new Office365();
$transport->createClient([
'client_id' => 'O365_CLIENT_ID',
'client_secret' => 'O365_CLIENT_SECRET',
'scope' => 'O365_SCOPE',
'tenant_id' => 'O365_TENANT_ID',
'account_id' => 'O365_ACCOUNT_ID',
]);
// Get the access token and its expiration from your application store
$transport->setToken($accessToken)
$transport->setTokenExpires($tokenExpires);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Ses;
$sesOptions = [
'key' => 'AWS_SES_KEY',
'secret' => 'AWS_SES_SECRET',
];
$transport = new Ses($sesOptions);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Google;
$transport = new Google();
$transport->createClient('my-google-app-config.json', '[email protected]');
// Fetch the token and its expiration to be stored with your application for future use
$transport->requestToken();
$accessToken = $transport->getToken();
$tokenExpires = $transport->getTokenExpires();
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Google;
$transport = new Google();
$transport->createClient('my-google-app-config.json', '[email protected]');
// Get the access token and its expiration from your application store
$transport->setToken($accessToken)
$transport->setTokenExpires($tokenExpires);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Smtp;
$smtpOptions = [
'host' => 'SMTP_HOST_DOMAIN',
'port' => 'SMTP_PORT',
'username' => 'SMTP_USERNAME',
'password' => 'SMTP_PASSWORD',
'encryption' => 'SMTP_ENCRYPTION'
];
$transport = new Smtp($smtpOptions);
$mailer = new Mailer($transport);
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendmail;
$transport = new Sendmail();
$mailer = new Mailer($transport);
use Pop\Mail\Client\Office365;
$office365 = new Office365();
$office365->createClient([
'client_id' => 'O365_CLIENT_ID',
'client_secret' => 'O365_CLIENT_SECRET',
'scope' => 'O365_SCOPE',
'tenant_id' => 'O365_TENANT_ID',
'account_id' => 'O365_ACCOUNT_ID',
]);
// Fetch the token and its expiration to be stored with your application for future use
$office365->requestToken();
$accessToken = $office365->getToken();
$tokenExpires = $office365->getTokenExpires();
use Pop\Mail\Client\Office365;
$office365 = new Office365();
$office365->createClient([
'client_id' => 'O365_CLIENT_ID',
'client_secret' => 'O365_CLIENT_SECRET',
'scope' => 'O365_SCOPE',
'tenant_id' => 'O365_TENANT_ID',
'account_id' => 'O365_ACCOUNT_ID',
]);
// Get the access token and its expiration from your application store
$office365->setToken($accessToken)
$office365->setTokenExpires($tokenExpires);
// Defaults to the Inbox and a limit of 10 messages. Returns an array of messages
$messages = $office365->getMessages();
// Returns an array of message data
$message = $office365->getMessage($messageId);
// Returns a string of the full message content
$message = $office365->getMessage($messageId, true);
// Returns an array of attachments
$attachments = $office365->getAttachments($messageId);
// Returns an array of attachment data, including the attachment data contents
$attachment = $office365->getAttachment($messageId, $attachmentId);
use Pop\Mail\Client\Google;
$google = new Google();
$google->createClient('my-google-app-config.json', '[email protected]');
// Fetch the token and its expiration to be stored with your application for future use
$google->requestToken();
$accessToken = $google->getToken();
$tokenExpires = $google->getTokenExpires();
use Pop\Mail\Client\Google;
$google = new Google();
$google->createClient('my-google-app-config.json', '[email protected]');
// Get the access token and its expiration from your application store
$google->setToken($accessToken)
$google->setTokenExpires($tokenExpires);
// Defaults to the Inbox and a limit of 10 messages. Returns an array of messages
$messages = $google->getMessages();
// Returns an array of message data
$message = $google->getMessage($messageId);
// Returns a string of the full message content
$message = $google->getMessage($messageId, true);
// Returns an array of attachments
$attachments = $google->getAttachments($messageId);
// Returns the attachment data contents
$attachment = $google->getAttachment($messageId, $attachmentId);
use Pop\Mail\Client\Imap;
$imap = new Client\Imap('imap.gmail.com', 993);
$imap->setUsername('[email protected]')
->setPassword('password');
$imap->setFolder('INBOX');
$imap->open('/ssl');
// Sorted by date, reverse order (newest first)
$ids = $imap->getMessageIdsBy(SORTDATE, true);
$headers = $imap->getMessageHeadersById($ids[0]);
$parts = $imap->getMessageParts($ids[0]);
// Assuming the first part is an image attachment, display image
header('Content-Type: image/jpeg');
header('Content-Length: ' . strlen($parts[0]->content));
echo $parts[0]->content;
use Pop\Mail\Message;
use Pop\Mail\Queue;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendmail;
$queue = new Queue();
$queue->addRecipient([
'email' => '[email protected]',
'name' => 'My Name',
'company' => 'My Company',
'url' => 'http://www.domain1.com/'
]);
$queue->addRecipient([
'email' => '[email protected]',
'name' => 'Another Name',
'company' => 'Another Company',
'url' => 'http://www.domain2.com/'
]);
$messageBody = <<<TEXT
How are you doing? Your [{company}] is great!
I checked it out at [{url}]
TEXT;
$message = new Message('Hello [{name}]!');
$message->setFrom('[email protected]');
$message->setBody($messageBody);
$queue->addMessage($message);
$mailer = new Mailer(new Sendmail());
$mailer->sendFromQueue($queue);
use Pop\Mail\Message;
use Pop\Mail\Mailer;
use Pop\Mail\Transport\Sendmail;
$message1 = new Mail\Message('Hello World');
$message1->setTo('[email protected]');
$message1->setFrom('[email protected]');
$message1->addText('Hello World! This is a test!');
$message1->addHtml('<html><body><h1>Hello World!</h1><p>This is a test!</p></body></html>');
$message1->save(__DIR__ . '/mail-queue/message1.msg');
$message2 = new Mail\Message('Hello World');
$message2->setTo('[email protected]');
$message2->setFrom('[email protected]');
$message2->addText('Hello World! This is a test!');
$message2->addHtml('<html><body><h1>Hello World!</h1><p>This is a test!</p></body></html>');
$message2->save(__DIR__ . '/mail-queue/message2.msg');
$mailer = new Mailer(new Sendmail());
$mailer->sendFromDir(__DIR__ . '/mail-queue');
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.