Отправка email с raspberry Pi php

Есть много случаев, когда это может быть очень полезно, иметь возможность отправлять сообщения с электронной почты от Raspberry Pi произвольным получателям. Это не то же самое что и реальная почта (например, Sendmail, Postfix, Exim, Qmail и т.д.), которые также могут получать и хранить электронные письма.

В дальнейшем мы собираемся, покрыть возможность отправки сообщений электронной почты, а не получать. В большинстве случаев этого достаточно, так как люди склонны использовать GMail, Yahoo! Mail и других крупных поставщиков услуг электронной почты и они хранят свою электронную почту на серверах этих провайдеров. Тем не менее, рассылка электронных писем от Raspberry Pi может пригодиться во многих ситуациях. Например, вы могли бы иметь некоторые датчики, подключенные к выводам GPIO в Pi и вы можете запрограммировать Pi, чтоб он отправил вам по электронной почте, когда температура в помещении поднимается выше или опускается ниже определенных пороговых значений, когда датчик газа регистрирует утечки нежелательных газов или, когда измеренное напряжение контролируемой батареи становится слишком низким.

Вы также можете иметь ваш Pi отправить вам ежедневно или еженедельно письма с обобщенным данным системы. Или, может быть, вы могли бы подключить веб-камеру к Raspberry Pi и установить некоторое программное обеспечение обнаружения движения, которая будет посылать вам по электронной почте, как только он обнаруживает движение в заданном районе вашего дома. Может быть, нам даже не нужно ехать так далеко. Может быть, вы хостите ваш веб-сайт WordPress на вашем Raspberry Pi и вы хотели бы, чтобы предоставить своим читателям возможность подписаться на посты. Все это означает, что Pi должен иметь возможность отправлять электронные письма, которые, к сожалению, может быть сложным для выполнения. Для достижения этой цели мы намерены установить кусок программного обеспечения под названием SSMTP, который является простым инструментом для отправки электронной почты.

Мы также собираемся настроить PHP таким образом, чтоб сделать возможным отправлять сообщения электронной почты внутри PHP скриптов. Таким образом, это будет легко для веб-приложений (например, плагинов WordPress), чтобы отправить почту для выбранных получателей. Многие серверы электронной почты сегодня имеют очень строгие правила для приема сообщений электронной почты. Например, если электронная почта не исходит от машины со статическим IP-адресом, они могут классифицировать сообщение как спам. Мы не хотим, чтобы это произошло с электронной почты, отправленных с Raspberry Pi, поэтому мы будем посылать электронную почту на сервер Google, который направит их вперед к реальным адресатам. Для того, чтобы быть в состоянии сделать это, вы должны иметь учетную запись GMail.

Установка и конфигурация SSMTP

1. Сделайте обновление ваших репозиториев:
apt-get update
2. Установите SSMTP и почтовые утилиты:
apt-get install ssmtp
apt-get install mailutils
3. Отредактируйте конфигурационный файл SSMTP:
nano /etc/ssmtp/ssmtp.conf
a) отредактируйте строки:

root=postmaster
mailhub=smtp.gmail.com:587
hostname=raspberrypi
AuthUser=YourGMailUserName@gmail.com
AuthPass=YourGMailPassword
UseSTARTTLS=YES

Не забудьте указать правильный GMail имя пользователя и пароль, в противном случае вы получите сообщение об ошибке аутентификации. Если имя хоста вашего Raspberry Pi отличается от "raspberrypi", укажите ваше реальное имя хоста здесь вместо этого.

b) Доп. конфигурации:
rewriteDomain=your.domain
Укажите это, если вы хотите, чтобы исходящие сообщения электронной почты, чтобы по всей видимости, посланный от your.domain (а не от gmail.com).
FromLineOverride=YES

Укажите это, если вы хотите, оставить SSMTP От области писем нетронутым. В противном случае он будет перезаписывать от поля с именем пользователя Linux, который отправляет электронную почту. Перезапись название взято из 5-го значения в строке, соответствующей представляемого пользователю, от / и т.д. / пароль файл. Если вы планируете отправлять сообщения электронной почты с веб-сайта (например, из WordPress плагин) и хотят иметь хорошие имена отправителя, как "John Doe", я рекомендую комментируя эту строку (которая равна установке значения НЕТ), в противном случае ваш сайт будет только иметь возможность отправлять сообщения электронной почты с меньшим количеством хороших имен отправителей, как johndoe@your.domain~~pobj. Другими словами, вы, вероятно, хотите, чтобы перезаписать SSMTP поле отправителя с красивым именем взят из /etc/passwd файла.

4. Измените SSMTP файл псевдонимов:
nano /etc/ssmtp/revaliases
Этот файл содержит данные о учетных записей электронной почты для существующих пользователей Linux в формате local_account: outgoing_address: mailhub [: порт]

Вы должны создать одну строку для всех пользователей в системе, с которой вы планируете, чтобы иметь возможность отправлять электронную почту. Например:

root:root@your.domain:smtp.gmail.com:587www-data:yourwebpagesname@your.domain:smtp.gmail.com:587

В случае, если вы хотите, чтобы отправить электронную почту из плагина WordPress, вы должны убедиться, что у вас есть линия для WWW-DATA пользователя, который является пользователь, под которым работает WordPress.

5. Установите права доступа к файлу конфигурации SSMTP:
chmod 774 /etc/ssmtp/ssmtp.conf

Права доступа к файлу /etc/ssmtp/ssmtp.conf определить, кто будет иметь возможность отправлять сообщения электронной почты от Raspberry Pi. По умолчанию этот файл принадлежит корень пользователя и группы файла является также корнем. Так что если вы хотите, чтобы другие пользователи, такие как WWW-данных, чтобы иметь возможность отправлять сообщения электронной почты (которые вы определенно хотите, если вы используете WordPress плагин, например, чтобы отправить электронные письма), то вам необходимо предоставить права чтения для пользователей, которые не является владельцем файла и не входит в группу файла. Вышеуказанные разрешения (774) означают, что владелец (корень) будет иметь возможность чтения / записи / выполнить файл (7), другие пользователи в корневой группе будет в состоянии сделать то же самое (7) и пользователей, которые а не в группе будут иметь право только на чтение файла (4). Для получения более подробной информации типа chmod -help.

Если вы предпочитаете не позволять каждому пользователю в вашей системе, чтобы отправить электронную почту, а затем добавить пользователя WWW-данных (или пользователь, который вы хотели бы дать разрешение на отправку сообщений электронной почты) в корневой группе и только дать права для пользователей в эта группа:
sudo usermod -a -G root www-data 
chmod 770 /etc/ssmtp/ssmtp.conf

Будьте осторожны. Добавление пользователя WWW-data в корневой группы иногда может быть не очень безопасно, так как это позволит вашему сайту, сделать много плохих вещей в вашей системе.

6. Хорошие имена отправителя:

Если вы хотите, чтобы ваш сайт (WordPress, например), чтобы иметь возможность отправлять сообщения электронной почты, которые, как представляется, посланный от человека с красивым именем "John Doe" или "Ваш супер веб-сайт", а не от простого имени отправителя, как вы @ your.domain, то вам необходимо убедиться, что в /etc/ssmtp/ssmtp.conf проверка файлов FromLineOverride линия прокомментировал (#) или установить NO, и вы должны дать хорошее имя для пользователя WWW-данных. Вы можете сделать это путем редактирования паролей файла: nano /etc/passwd

Find the line corresponding to www-data and set the fifth value in it to a nice name like “Your super website”.

Отправка имейлов из командной строки:


После того, как вы закончите с настройки и конфигурацией, вы можете отправить электронную почту очень легко из командной строки!!
echo “Test text” | mail -s “Test Mail” targetperson@example.com

Текст "Текст Test" отправляется на электронный адрес targetperson@example.com~~pobj (вы можете также указать несколько адресов, разделенных пробелами) с темой "Test Mail". Для получения дополнительных опций типа почты -help.

Отправка имеилов при помощи PHP cкриптов:

Если вы хотели бы также иметь возможность посылать письма от PHP scrips (что в случае, если вы планируете отправить электронную почту с вашего сайта, возможно, из WordPress плагин как Subscribe2), то вам необходимо настроить PHP, чтобы найти отправка почты заявление.

1. Отредактируйте ваш PHP конфигурационный файл:
nano etc/php5/apache2/php.ini
Найти (F6) строку, которая содержит sendmail_path и установить его на соответствующее значение:
sendmail_path = /usr/sbin/sendmail -t -i

2. Для того, чтобы проверить, если PHP действительно может отправлять электронные письма, создайте файл с именем mailtest.php и поместите следующий код в него:
<?php
$to = “targetperson@example.com”;
$subject = “PHP Test mail”;
$message = “This is a test email”;
$from = “you@your.domain”;
$headers = “From:” . $from;
mail($to,$subject,$message,$headers);
echo “Mail Sent.”;
?>
Тестирование с помощью вызова скрипт из командной строки:
PHP mailtest.php

Комментарии

Популярные сообщения из этого блога

DOS атака при помощи Python

Как исправить ошибку "Notreadableerror: could not start video source" в javascript

Ведем телеграм канал через питон