$mail = newNette\Mail\Message;
$mail->setFrom('John
'
)
->addTo('peter@example.com')
->addTo('jack@example.com')
->setSubject('Order Confirmation')
->setBody("Hello, Your order has been accepted.");
All parameters must be encoded in UTF-8.
In addition to specifying recipients with the addTo() method, you can also specify the recipient of copy with addCc(), or the recipient of blind copy with addBcc(). All these methods, including setFrom(), accepts addressee in three ways:
$mail->setFrom('john.doe@example.com');
$mail->setFrom('john.doe@example.com', 'John Doe');
$mail->setFrom('John Doe
'
);
The body of an email written in HTML is passed using the setHtmlBody() method:
$mail->setHtmlBody('
Hello,
Your order has been accepted.
');
You don't have to create a text alternative, Nette will generate it automatically for you. And if the email does not have a subject set, it will be taken from the </code> element.</p>
<p dir="auto">Images can also be extremely easily inserted into the HTML body of an email. Just pass the path where the images are physically located as the second parameter, and Nette will automatically include them in the email:</p>
<div class="highlight highlight-text-html-php position-relative overflow-auto" data-snippet-clipboard-copy-content="// automatically adds /path/to/images/background.gif to the email
$mail->setHtmlBody(
'<b>Hello</b> <img src="background.gif">',
'/path/to/images'
);">
<pre><span class="pl-c">// automatically adds /path/to/images/background.gif to the email</span>
<span class="pl-s1"><span class="pl-c1">$</span>mail</span>-><span class="pl-en">setHtmlBody</span>(
<span class="pl-s">'<b>Hello</b> <img src="background.gif">'</span>,
<span class="pl-s">'/path/to/images'</span>
);</pre>
</div>
<p dir="auto">The image embedding algorithm supports the following patterns: <code><img src=...></code>, <code><body background=...></code>, <code>url(...)</code> inside the HTML attribute <code>style</code> and special syntax <code>[[...]]</code>.</p>
<p dir="auto">Can sending emails be even easier?</p>
<p dir="auto">Emails are like postcards. Never send passwords or other credentials via email.</p>
<h2 dir="auto"><a id="user-content-attachments" class="anchor" aria-hidden="true" href="#attachments">
<svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">
<path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path>
</svg></a>Attachments</h2>
<p dir="auto">You can, of course, attach attachments to email. Use the <code>addAttachment(string $file, string $content = null, string $contentType = null)</code>.</p>
<div class="highlight highlight-text-html-php position-relative overflow-auto" data-snippet-clipboard-copy-content="// inserts the file /path/to/example.zip into the email under the name example.zip
$mail->addAttachment('/path/to/example.zip');
// inserts the file /path/to/example.zip into the email under the name info.zip
$mail->addAttachment('info.zip', file_get_contents('/path/to/example.zip'));
// attaches new example.txt file contents "Hello John!"
$mail->addAttachment('example.txt', 'Hello John!');">
<pre><span class="pl-c">// inserts the file /path/to/example.zip into the email under the name example.zip</span>
<span class="pl-s1"><span class="pl-c1">$</span>mail</span>-><span class="pl-en">addAttachment</span>(<span class="pl-s">'/path/to/example.zip'</span>);
<span class="pl-c">// inserts the file /path/to/example.zip into the email under the name info.zip</span>
<span class="pl-s1"><span class="pl-c1">$</span>mail</span>-><span class="pl-en">addAttachment</span>(<span class="pl-s">'info.zip'</span>, <span class="pl-en">file_get_contents</span>(<span class="pl-s">'/path/to/example.zip'</span>));
<span class="pl-c">// attaches new example.txt file contents "Hello John!"</span>
<span class="pl-s1"><span class="pl-c1">$</span>mail</span>-><span class="pl-en">addAttachment</span>(<span class="pl-s">'example.txt'</span>, <span class="pl-s">'Hello John!'</span>);</pre>
</div>
<h2 dir="auto"><a id="user-content-templates" class="anchor" aria-hidden="true" href="#templates">
<svg class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">
<path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path>
</svg></a>Templates</h2>
<p dir="auto">If you send HTML emails, it's a great idea to write them in the <a href="https://latte.nette.org" rel="nofollow">Latte</a> template system. How to do it?</p>
<div class="highlight highlight-text-html-php position-relative overflow-auto" data-snippet-clipboard-copy-content="$latte = new Latte\Engine;
$params = [
'orderId' => 123,
];
$mail = new Nette\Mail\Message;
$mail->setFrom('John <john@example.com>')
->addTo('jack@example.com')
->setHtmlBody(
$latte->renderToString('email.latte', $params),
'/path/to/images'
);">
<pre><span class="pl-s1"><span class="pl-c1">$</span>latte</span> = <span class="pl-k">new</span> <span class="pl-v">Latte</span>\<span class="pl-v">Engine</span>;
<span class="pl-s1"><span class="pl-c1">$</span>params</span> = [
<span class="pl-s">'orderId'</span> => <span class="pl-c1">123</span>,
];
<span class="pl-s1"><span class="pl-c1">$</span>mail</span> = <span class="pl-k">new</span> <span class="pl-v">Nette</span>\<span class="pl-v">Mail</span>\<span class="pl-v">Message</span>;
<span class="pl-s1"><span class="pl-c1">$</span>mail</span>-><span class="pl-en">setFrom</span>(<span class="pl-s">'John <john@example.com>'</span>)
-><span class="pl-en">addTo</span>(<span class="pl-s">'jack@example.com'</span>)
-><span class="pl-en">setHtmlBody</span>(
<span class="pl-s1"><span class="pl-c1">$</span>latte</span>-><span class="pl-en">renderToString</span>(<span class="pl-s">'email.latte'</span>, <span class="pl-s1"><span class="pl-c1">$</span>params</span>),
<span class="pl-s">'/path/to/images'</span>
);</pre>
</div>
<p dir="auto">File <code>email.latte</code>:</p>
<div class="highlight highlight-text-html-basic position-relative overflow-auto" data-snippet-clipboard-copy-content="<html>
<head>
<meta charset="utf-8">
<title>Order Confirmation
Hello,
Your order number {$orderId} has been accepted.
">
<html><head><metacharset="utf-8"><title>Order Confirmationtitle><style>body {
background:url("background.png")
}
style>head><body><p>Hello,p><p>Your order number {$orderId} has been accepted.p>body>html>
Nette automatically inserts all images, sets the subject according to the </code> element, and generates text alternative for HTML body.</p>
Sending Emails
Mailer is class responsible for sending emails. It implements the Nette\Mail\Mailer interface and several ready-made mailers are available which we will introduce.
SendmailMailer
The default mailer is SendmailMailer which uses PHP function mail(). Example of use:
It does not send email but sends them through a set of mailers. If one mailer fails, it repeats the attempt at the next one. If the last one fails, it starts again from the first one.
Other parameters in the constructor include the number of repeat and waiting time in miliseconds.
DKIM
DKIM (DomainKeys Identified Mail) is a trustworthy email technology that also helps detect spoofed messages. The sent message is signed with the private key of the sender's domain and this signature is stored in the email header. The recipient's server compares this signature with the public key stored in the domain's DNS records. By matching the signature, it is shown that the email actually originated from the sender's domain and that the message was not modified during the transmission of the message.
After upgrading nette/mail to version 3.1.3 from 3.1.2, the e-mails won't send with exception:
Nette\Mail\SmtpException
SMTP server did not accept STARTTLS with error: 503 5.5.2 Send hello first [DB5EUR03FT018.eop-EUR03.prod.protection.outlook.com]
I suspect this pull request https://github.com/nette/mail/pull/67 to be an issue.
If the attachment file name contains UTF8 characters, the header is not RFC 2047 encoded, which causes email to rely on support of SMTPUTF8 extension, making the email undeliverable to destinations servers that don't support it (gmail supports it, but e.g. email.cz does not).
Steps To Reproduce
$mail = new Nette\Mail\Message;
$mail->setFrom('John <[email protected]>')
->addTo('[email protected]')
->setSubject('Kůň v pÅ™Ãloze')
->setBody("Test")
->addAttachment("kůň.txt", "test");
die($mail->generateMessage());
This worked in the previous version, the bug was introduced with this change https://github.com/nette/mail/commit/6f333738075ba9ee152795dcbbd84569127a3182 which fixed #24, in this change, call to encodeHeader() has been removed. This call should be probably returned, but I'm not sure how exactly in order to not introduce back the issue #24.
I know a workaround is not to use utf8 in attachment file name with e.g. Strings::toAscii($filename), but as long as the encoding works well with other headers like Subject or From, I don't see a reason for this header to be an exception.
Gmail pays particularly close attention to Message ID and Received headers. Message IDs that are formed incorrectly (without brackets <> and with wrong domain after @) can make Gmail think you are a spammer.
Link in HTML mail may be important (like a links to verification, unsubscribe or other marketing behavior). Is important do not loss this information on all variants of e-mail message.
With error suppression, i.e. @stream_socket_client(), will have $errno set to 0 and $error being an empty string ''. This is an undocumented behaviour but leads to inconveniences during debug and development.
According to the document and my tests with PHP 7.0, 7.1 and 7.2 this function does not throw.
Removing the @ sign will have the function populates the actual $errno and $error which I believe is in fact the expected result.
No work. i am attempting to send a mail but it give me this:
Fatal error: Uncaught Error: Class 'Nette\Mail\Message' not found in C:\xampp\htdocs\Pasantias pdf\Registro\componentes\correo.php:4 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Pasantias pdf\Registro\componentes\correo.php on line 4
my code is the following:
use Nette\Mail\Message;
$mail = new Message;
$mail->setFrom('Jorge ********@gmail.com')
->addTo('***@gmail.com')
->setSubject('Order Confirmation')
->setBody("Hello, Your order has been accepted.");
$mailer = new Nette\Mail\SmtpMailer([
'host' => 'smtp.gmail.com',
'username' => '*****@gmail.com',
'password' => '***',
'secure' => 'ssl',
'context' => [
'ssl' => [
'capath' => '/path/to/my/trusted/ca/folder',
],
],
]);
$mailer->send($mail);
Previous behaviour was insufficient, you just got name of command which failed. There was no information why. Now you should see the response of SMTP server. For example:
SMTP server did not accept RCPT TO:<[email protected]> with error: 550 5.1.1 User unknown; rejecting
bad match if image name have ( )
example:
<img src="test/test(1).jpg">
some wron on
https://github.com/nette/mail/blob/master/src/Mail/Message.php#L197
Whenever there is a bigger base64 encoded image in E-mail we get this exception:
Steps To Reproduce
It's clear from bug description
Additional
I'm not sure how to even solve this, avoiding Regex if possible would maybe be best since we never know how big e-mail can be and with base64 encoded images this can become huge quickly...
I know I can set bigger limit, but then again how much memory will it use and when will we hit it again...
Probably only proper solution here would be to add image as attachment and not base64 encoded...
I've managed to avoid issue in this particular mail since we're not using any images so I just set basePath as null so it doesn't go into this part of code, but obviously that's not a solution...
Intended to periodically test the other mailers.
I'm not sure whether default $shuffleProbability should be 0.0 or sth like 0.001 (would be a minor BC break).
variable $mail is not automatically passed to templates, you have to do it yourself (BC break) (but better than {var $mail->subject = "Your new order"} is this <title>Your new order</title>, isn't it?)
if you have linked images (with relative paths) in template, pass base file path to images as second parameter to setHtmlBody()
Message: removes from body</li>
</ul>
<i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/tarball/v2.3.0">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/zipball/v2.3.0">Source code(zip)</a><br>
</article>
</div>
</div>
</div>
</li>
<li>
<div class="d-flex">
<div class="right">
<h4>
v2.2.3(Jan 31, 2015)
</h4>
<div class="review-description">
<article class="markdown-body">
<ul>
<li>fix</li>
</ul>
<p>For the details you can have a look at the <a href="https://github.com/nette/mail/compare/v2.2.2...v2.2.3">diff</a>.</p>
<i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/tarball/v2.2.3">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/zipball/v2.2.3">Source code(zip)</a><br>
</article>
</div>
</div>
</div>
</li>
<li>
<div class="d-flex">
<div class="right">
<h4>
v2.2.2(Aug 27, 2014)
</h4>
<div class="review-description">
<article class="markdown-body">
<ul>
<li>changed & fixed encoding of emails in headers</li>
<li>base64 is not used for long headers & where can be quoted string #4</li>
<li>setHtmlBody() decodes %XX in URL</li>
</ul>
<p>For the details you can have a look at the <a href="https://github.com/nette/mail/compare/v2.2.1...v2.2.2">diff</a>.</p>
<i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/tarball/v2.2.2">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/zipball/v2.2.2">Source code(zip)</a><br>
</article>
</div>
</div>
</div>
</li>
<li>
<div class="d-flex">
<div class="right">
<h4>
v2.2.1(Jun 24, 2014)
</h4>
<div class="review-description">
<article class="markdown-body">
<ul>
<li>SendMailMailer: fixed catching of error message</li>
</ul>
<p>For the details you can have a look at the <a href="https://github.com/nette/mail/compare/v2.2.0...v2.2.1">diff</a>.</p>
<i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/tarball/v2.2.1">Source code(tar.gz)</a><br><i class="fa fa-file-code-o m-r-xs" aria-hidden="true"></i><a href="https://api.github.com/repos/nette/mail/zipball/v2.2.1">Source code(zip)</a><br>
</article>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-lg-4 right">
<div id="basic" class="tab-pane fade show active">
<div class="box shadow-sm rounded bg-white mb-3">
<div class="box-title border-bottom p-3">
<h6 class="m-0">Owner
</h6>
</div>
<div class="d-flex align-items-center p-3 job-item-header">
<div class="overflow-hidden mr-2">
<h6 class="font-weight-bold -dark mb-0 text-truncate">
Nette Foundation
</h6>
<div class="small text-gray-500">
</div>
</div>
<img class="img-fluid ml-auto" style="border-radius: 50%;" src="https://avatars.githubusercontent.com/u/99965?v=4&s=60" alt="Nette Foundation">
</div>
<div class="box-body p-3">
<a href="https://github.com/nette/mail" rel="nofollow" target="_blank" class="btn btn-lg btn-block btn-info mb-3"><i class="fa fa-github" aria-hidden="true"></i> GitHub </a>
<a href="https://doc.nette.org/mailing" rel="nofollow" target="_blank" class="btn btn-lg btn-block btn-dark mb-3"><i class="fa fa-home" aria-hidden="true"></i> https://doc.nette.org/mailing</a>
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/protonemedia-laravel-verify-new-email-php-email"><h6 class="font-weight-bold ">This package adds support for verifying new email addresses: when a user updates its email address, it won't replace the old one until the new one is verified.</h6></a>
<p class="mb-0 text-muted">Laravel Verify New Email Laravel supports verifying email addresses out of the box. This package adds support for verifying new email addresses. When </p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/47979790?v=4&s=40" alt="Protone Media" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 300 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 30, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/willdurand-emailreplyparser"><h6 class="font-weight-bold ">EmailReplyParser is a PHP library for parsing plain text email content, based on GitHub's email_reply_parser library written in Ruby</h6></a>
<p class="mb-0 text-muted">EmailReplyParser EmailReplyParser is a PHP library for parsing plain text email content, based on GitHub's email_reply_parser library written in Ruby.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/217628?v=4&s=40" alt="William Durand" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 606 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 8, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/willdurand-EmailReplyParser-php-email"><h6 class="font-weight-bold ">PHP library for parsing plain text email content.</h6></a>
<p class="mb-0 text-muted">EmailReplyParser EmailReplyParser is a PHP library for parsing plain text email content, based on GitHub's email_reply_parser library written in Ruby.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/217628?v=4&s=40" alt="William Durand" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 606 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 8, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/mettle-sendportal"><h6 class="font-weight-bold ">SendPortal - Open-source self-hosted email marketing, subscriber and list management, email campaigns and more</h6></a>
<p class="mb-0 text-muted">SendPortal includes subscriber and list management, email campaigns, message tracking, reports and multiple workspaces/domains in a modern, flexible and scalable application.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/1176340?v=4&s=40" alt="Mettle" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 1.2k <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 4, 2023
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/experius-magento-2-module-experius-email-catcher"><h6 class="font-weight-bold ">Magento 2 Email Catcher or Email Logger Module. </h6></a>
<p class="mb-0 text-muted">Magento 2 Module Experius email catcher / - logger</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/3177384?v=4&s=40" alt="Experius" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 49 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 16, 2021
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/fgribreau-mailchecker"><h6 class="font-weight-bold ">Cross-language email validation. Backed by a database of over 38 000 throwable email domains.</h6></a>
<p class="mb-0 text-muted">Cross-language temporary (disposable/throwaway) email detection library. Covers 38038+ fake email providers.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/138050?v=4&s=40" alt="Francois-Guillaume Ribreau" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 1.4k <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 9, 2023
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/Webklex-laravel-imap-php-email"><h6 class="font-weight-bold ">Laravel IMAP is an easy way to integrate both the native php-imap module and an extended custom imap protocol into your Laravel app.</h6></a>
<p class="mb-0 text-muted">Laravel IMAP is an easy way to integrate both the native php-imap module and an extended custom imap protocol into your Laravel app. This enables your app to not only respond to new emails but also allows it to read and parse existing mails and much more.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/2884144?v=4&s=40" alt="null" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 530 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 6, 2023
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/acmailer-acmailer-php-email"><h6 class="font-weight-bold ">Mail sending module for Mezzio and Laminas MVC with support for file attachment and template email composition</h6></a>
<p class="mb-0 text-muted">This module provides an easy and flexible way to send emails from Mezzio and Laminas MVC applications (formerly known as Zend Expressive and Zend MVC). It allows you to pre-configure emails and transports, and then send those emails at runtime.</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/59024549?v=4&s=40" alt="null" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 82 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 16, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/PHPMailer-PHPMailer-php-email"><h6 class="font-weight-bold ">The classic email sending library for PHP</h6></a>
<p class="mb-0 text-muted">PHPMailer – A full-featured email creation and transfer class for PHP Features Probably the world's most popular code for sending email from PHP! Used</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/3959702?v=4&s=40" alt="PHPMailer" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 19k <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 1, 2023
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/nojacko-email-validator-php-email"><h6 class="font-weight-bold ">Small PHP library to valid email addresses using a number of methods.</h6></a>
<p class="mb-0 text-muted">Email Validator Small PHP library to valid email addresses using a number of methods. Features Validates email address Checks for example domains (e.g</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/1667141?v=4&s=40" alt="James Jackson" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 154 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 31, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/tedivm-Fetch"><h6 class="font-weight-bold ">Fetch is a library for reading email and attachments, primarily using the POP and IMAP protocols</h6></a>
<p class="mb-0 text-muted">Fetch Fetch is a library for reading email and attachments, primarily using the POP and IMAP protocols. Installing N.b. A note on Ubuntu 14.04 (probab</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/7403633?v=4&s=40" alt="Tedious Developments" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 501 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 4, 2023
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/henrikbjorn-Stampie-php-email"><h6 class="font-weight-bold ">Library for using online Email providers</h6></a>
<p class="mb-0 text-muted">Stampie Stampie have been moved to the "Flint" organization in order to get a better collaborative flow. Stampie is a simple API Wrapper for different</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/19725?v=4&s=40" alt="Henrik Bjørnskov" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 32 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Oct 7, 2020
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/Stampie-Stampie-php-email"><h6 class="font-weight-bold ">Library for using online Email providers</h6></a>
<p class="mb-0 text-muted">Stampie Stampie is a simple API Wrapper for different email providers such as Postmark and SendGrid. It is very easy to use and to integrate into your</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/25911053?v=4&s=40" alt="Stampie" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 288 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 31, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/readytouse-php-script-for-sending-emails-with-an-html-template-will-use-a-gmail-account-as-the-sender-and-you-will-not-need-any-email-server-powered"><h6 class="font-weight-bold ">A ready-to-use PHP script for sending Emails with an HTML Template will use a Gmail account as the sender and you will not need any email server. Powered by PHPMailer.</h6></a>
<p class="mb-0 text-muted">Gmail Email Sender by PHP A ready-to-use PHP script for sending Emails with an HTML Template will use a Gmail account as the sender and you will not n</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/2658040?v=4&s=40" alt="Max Base" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 4 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Oct 29, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/nguyenanhung-omnisend-php-email"><h6 class="font-weight-bold ">Omnisend: Ecommerce Email Marketing and SMS Platform</h6></a>
<p class="mb-0 text-muted">Omnisend Omnisend: Ecommerce Email Marketing and SMS Platform Version v1.x Support all PHP Version >=5.6 v2.x Support all PHP Version >=7.0 Installati</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/9348255?v=4&s=40" alt="Hung Nguyen" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 3 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 6, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/ZLaxtert-Email-Generator"><h6 class="font-weight-bold ">EMAIL, PASSWORD AND USERNAME GENERATOR</h6></a>
<p class="mb-0 text-muted">Email-Generator EMAIL, PASSWORD AND USERNAME GENERATOR Install on desktop : Install XAMPP Added environment variable system path => C:\xampp\php downl</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/70899617?v=4&s=40" alt="Alex" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 2 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jan 8, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/stampie-stampie"><h6 class="font-weight-bold ">Stampie is a simple API Wrapper for different email providers such as Postmark and SendGrid.</h6></a>
<p class="mb-0 text-muted">Stampie Stampie is a simple API Wrapper for different email providers such as Postmark and SendGrid. It is very easy to use and to integrate into your</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/25911053?v=4&s=40" alt="Stampie" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 289 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 5, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/omnimail-omnimail-php-email"><h6 class="font-weight-bold ">Send email across all platforms using one interface</h6></a>
<p class="mb-0 text-muted">Send email across all platforms using one interface. Table Of Content Requirements Installation Providers AmazonSES Mailgun Mailjet Mandrill Postmark </p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/69866491?v=4&s=40" alt="Omnimail" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 329 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Dec 30, 2022
</div>
</div>
<div class="box shadow-sm mb-3 rounded bg-white ads-box">
<div class="p-3 border-bottom">
<a href="/repo/rajurayhan-laravel-ews-mail-server-php-email"><h6 class="font-weight-bold ">Sending Email via Microsoft Exchange Web Services made Easy! </h6></a>
<p class="mb-0 text-muted">Send Mail via Exchange Web Services! Sending Email via Microsoft Exchange Web Services (EWS) made easy! Installation Install via Composer composer req</p>
</div>
<div class="p-2">
<img class="lazy img-fluid mr-3" style="border-radius: 50%;max-width: 15%" data-original="https://avatars.githubusercontent.com/u/6824950?v=4&s=40" alt="Raju Rayhan" >
<i class="fa fa-star ml-3" aria-hidden="true"></i> 19 <i class="fa fa-clock-o ml-3" aria-hidden="true"></i> Jul 19, 2022
</div>
</div>
</div>
</div>
</div>
</div>
<!-- footer -->
<footer class="bg-white">
<div class="container">
<div class="copyright">
<div class="logo">
<a href="/">
<img src="/assets/images/logo_bestofphp.png">
</a>
</div>
<p>2022.bestofphp
</p>
</div>
</div>
</footer>
<!-- footer-->
<!-- Bootstrap core JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha512-bnIvzh6FU75ZKxp0GXLH9bewza/OIw6dLVh9ICg0gogclmYGguQJWl8U30WpbsGTqbIiAwxTsbe76DErLq5EDQ==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.bundle.min.js" integrity="sha512-Oy5BruJdE3gP9+LMJ11kC5nErkh3p4Y0GawT1Jrcez4RTDxODf3M/KP3pEsgeOYxWejqy2SPnj+QMpgtvhDciQ==" crossorigin="anonymous"></script>
<!-- select2 Js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js" integrity="sha512-2ImtlRlf2VVmiGZsjm9bEyhjGW4dU7B6TNwh/hx/iSByxNENtj3WVE6o/9Lj4TJeVXPi4bnOIMXFIJJAeufa0A==" crossorigin="anonymous"></script>
<!-- Custom -->
<script src="/assets/js/custom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>
<script>
$(function() {
$("img.lazy").lazyload({
threshold :180,
failurelimit :20,
effect : "fadeIn"
});
});
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
</body>
</html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>