landlib/simplemail

Reliable and comfortable mail sending with PHP mail() use gmail.com. Attachment support. Надёжная и удобная отправка писем with gmail.com. Вложения поддерживаются.

dev-master 2022-12-14 18:47 UTC

This package is auto-updated.

Last update: 2024-05-14 22:03:45 UTC


README

Content / Содержание

Ru

En

En

Content

About

Installation

Usage on product server

Usage on localhost linux ubuntu and gmail service

About

This reliable and comfortable send email class with attachment support using PHP mail() function. I use it PHP class last ten years and I see, than it more reliable then Swift_Mailer and Symfony Mailer email tools.

It is not modest, but I will write. In November 2019 I created Symfony 3.4 project, it use gmail service on my localhost and hosting provider mailbox in production site.

03 January 2020 year I find, that suddenly emails stopped sending from my localhost (I use gmail account and ssmtp). There were no errors in the logs of Symphonies 3.4.

I do not edited my Symfony scripts.

I try send email from Symfony 5.0.2 project, but got error "Exception occurred while flushing email queue: Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed".

I try send email use my class SimpleMail - and it was successfull.

I many used this script, on different php hostings. It realy is working (for example - one from first my commits with it class here https://github.com/lamzin-andrey/gz.loc/blob/master/www/lib/classes/mail/SampleMail.php).

Therefore I public this PHP class, I hope that will helpfull for you too.

Happy New Year and Merry Christmas.

Installation

composer require landlib/simplemail

or

git clone https://github.com/lamzin-andrey/simplemail

Usage on product server

Configure mailbox in ISP Manager on your hosting provider

Create mailbox using ISP Manager interface. Will be sure, than you can send email from it use RoundCude or other interface.

Example

use Landlib\SimpleMail;

//Simple email
$sender = 'yoursendmailbox@yoursite.com';
$recipient = 'yourothermailbox@gmail.com';
$mailer = new SimpleMail();
$mailer->setSubject('It test package landlib/simplemail');
$mailer->setFrom($sender, 'Your name');
$mailer->setTo($recipient);
$mailer->setBody('Hello, my friend', 'text/html', 'UTF-8');
$r = $mailer->send();
var_dump($r);

//Mail with attach
$mailer->setSubject('It test package landlib/simplemail - mail with inline attachment');
$mailer->setTextWithImages('Hello, my friend, {smile}!' . "\nI am a very satisfied person!", ['{smile}' => __DIR__ . '/smile.png']);
$r = $mailer->send();
var_dump($r);

Usage on localhost linux ubuntu and gmail service

It for linux ubuntu Desktop users.

Create gmail account and allow access for unsafe applications

On 03 01 2020 it possible on link https://myaccount.google.com/lesssecureapps

If link do not work, configure your ssmtp (see Configure ssmtp) and try run example script app.php.

php app.php

You can see text like this:

ssmtp: Authorization failed (535 5.7.8  https://support.google.com/mail/?p=BadCredentials h7sm24406885lfj.29 - gsmtp)
/opt/lampp/htdocs/mh.loc/www/q/q/simplemail/example/app.php:31:
bool(false)

Goto link from message and see support page - it containts link to settings page, where you can set allow access unsafe applications.

Instal and configure ssmtp server

It for linux ubuntu Desktop users.

sudo apt-get install ssmtp

Let your gmail address will testshop@gmail.com.

Open file /etc/ssmtp/revaliases

sudo gedit /etc/ssmtp/revaliases

Set string

root:testshop@gmail.com:smtp.gmail.com:587

Open file /etc/ssmtp/ssmtp.conf

sudo gedit /etc/ssmtp/ssmtp.conf

Set content

root=testshop@gmail.com
mailhub=smtp.gmail.com:587
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=testshop@gmail.com
AuthPass=***** #your password must be here
FromLineOverride=YES

Open your php.ini file (I use XAMPP, my php.ini location is /opt/lampp/etc/php.ini)

and add (or replace) string

sendmail_path = /usr/sbin/ssmtp -t

Restart your apache server (I use XAMPP, therefore run /opt/lampp/lampp restart)

Run example script app.php (see Create gmail account section)

Ru

Содержание

Что это

Установка

Использование на продакшене

Использование на локальном хосте Linux Ubuntu и службы Gmail

Что это

Это надежный и удобный класс для отправки электронной почты с поддержкой вложений с помощью функции PHP mail(). Я использую этот класс PHP последние десять лет и вижу, что он более надежен, чем инструменты электронной почты Swift_Mailer и Symfony Mailer.

Это звучит нескромно, но я напишу почему я так считаю.

В ноябре 2019 года я создал проект Symfony 3.4, он использует службу gmail на моем локальном хосте и почтовый ящик хостинг-провайдера на продакшене.

03 января 2020 года я обнаружил, что внезапно письма перестали отправляться с моего локального хоста (я использую учетную запись gmail и ssmtp). В логах Symfony 3.4 ошибок не было.

Я не редактировал свои скрипты Symfony.

Я попытался отправить письмо из проекта Symfony 5.0.2, но получил ошибку "Exception occurred while flushing email queue: Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed".

Тогда я попытался отправить электронную почту, используя мой класс SimpleMail - и это было успешно.

Я много использовал этот скрипт раньше, на разных хостингах php. Это действительно работает (например, один из первых моих коммитов с этим классом здесь https://github.com/lamzin-andrey/gz.loc/blob/master/www/lib/classes/mail/SampleMail.php).

Поэтому я публикую этот класс PHP, я надеюсь, что он вам пригодится.

С Новым годом и Рождеством.

Установка

composer require landlib/simplemail

или

git clone https://github.com/lamzin-andrey/simplemail

Использование на продакшене

Настройте почтовый ящик в ISP Manager на хостинг-провайдере

Создайте почтовый ящик с помощью интерфейса ISP Manager. Убедитесь, что вы можете отправить письмо с него, используя RoundCude или другой интерфейс.

Пример кода

use Landlib\SimpleMail;

//Простой email
$sender = 'yoursendmailbox@yoursite.com';
$recipient = 'yourothermailbox@gmail.com';
$mailer = new SimpleMail();
$mailer->setSubject('It test package landlib/simplemail');
$mailer->setFrom($sender, 'Your name');
$mailer->setTo($recipient);
$mailer->setBody('Hello, my friend', 'text/html', 'UTF-8');
$r = $mailer->send();
var_dump($r);

//Письмо с вложением
$mailer->setSubject('It test package landlib/simplemail - mail with inline attachment');
$mailer->setTextWithImages('Hello, my friend, {smile}!' . "\nI am a very satisfied person!", ['{smile}' => __DIR__ . '/smile.png']);
$r = $mailer->send();
var_dump($r);

Использование на локальном хосте Linux Ubuntu и службы Gmail

Это для пользователей Linux Ubuntu Desktop.

Создать учетную запись Gmail и разрешить доступ для небезопасных приложений

На 03 01 2020 это возможно по ссылке https://myaccount.google.com/lesssecureapps

Если ссылка не работает, настройте ssmtp (см. Настройка ssmtp) и попробуйте запустить пример сценария app.php из папки example.

php app.php

Вы можете увидеть текст похожий на этот:

ssmtp: Authorization failed (535 5.7.8  https://support.google.com/mail/?p=BadCredentials h7sm24406885lfj.29 - gsmtp)
/opt/lampp/htdocs/mh.loc/www/q/q/simplemail/example/app.php:31:
bool(false)

Переходите по ссылке из сообщения и смотрите страницу поддержки - она содержит ссылку на страницу настроек, где вы можете разрешить доступ небезопасных приложений.

Установить и настроить сервер ssmtp

Это для пользователей Linux Ubuntu Desktop.

sudo apt-get install ssmtp

Например ваш адрес testshop@gmail.com.

Откройте файл /etc/ssmtp/revaliases

sudo gedit /etc/ssmtp/revaliases

Добавьте строку

root:testshop@gmail.com:smtp.gmail.com:587

Откройте файл /etc/ssmtp/ssmtp.conf

sudo gedit /etc/ssmtp/ssmtp.conf

Замените содержимое

root=testshop@gmail.com
mailhub=smtp.gmail.com:587
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=testshop@gmail.com
AuthPass=***** #здесь должен быть ваш пароль, кавычки не нужны
FromLineOverride=YES

Откройте ваш php.ini file (Я использую XAMPP, мой php.ini находится /opt/lampp/etc/php.ini)

и добавьте или отредактируйте строку

sendmail_path = /usr/sbin/ssmtp -t

Рестартуйте apache (Я использую XAMPP, поэтому запускаю sudo /opt/lampp/lampp restart)

Запустите пример скрипта app.php (смотрите раздел Создать учетную запись Gmail и разрешить доступ для небезопасных приложений)