Автоматизация обработки почты на ubuntu. скрипт для скачивание вложений почты

Используем fetchmail для автоматизации разбора почты

Потребовалось мне принимать емейлы фильтровать их по определённым критериям и обрабатывать скриптами (отделять вложения, выполнять действия над вложениями). С такой задачей мог бы справиться плагин FiltaQuilla для Thunderbird.

Однако плагин некорректно работает с моим Thunderbird версии 30 для Linux. Если он выполняется автоматически то сохраняет пустое вложение, хотя при ручном выполнении всё делает корректно.

Автор упорно молчит, а править чужой плагин у меня небыло времени.

Итак мне было нужно:

  • периодически проверять наличие писем в специальном почтовом ящике;
  • стягивать их в раздельные файлы;
  • сохранять все вложения из каждого письма;
  • анализировать заголовки и тексты писем;
  • запускать скрипты по манипуляции с текстами писем и вложениями.

Автомат обработки почты с fetchmail я намеренно вывел на отдельный почтовый ящик по нескольким причинам:

  • использование fetchmail требует указания пароля в конфигурационном файле, а я не хотел оставлять в открытом виде пароль для свого почтового эккаунта;
  • получение почты в два ящика даёт возможность оставить ящик автомата полностью без присмотра не опасаясь пропустить важное сообщение;
  • два ящика предоставляют возможность параллельной работы почтового клиента и fetchmail по протоколам pop3 не мешая друг другу. При этом и почтовый автомат и почтовый клиент будут забирать всю почту из своих ящиков без требования взаимной синхронизации. Из соображений безопасности я никогда не оставляю почту на сервере и всегда настраиваю почтовый клиент так чтобы вытянув письмо на локальный диск он удалил его с сервера. Чтобы забирать почту из одного ящика и оставлять его пустым потребовалась бы синхронизация: либо автомат либо почтовый клиент должны бы были успеть посмотреть почту до того как второй заберёт её и удалит из ящика.

Так как вся необходимая для автоматической обработки почта приходит на мой емейл либо его алиасы я настроил необходимые правила фильтрами своей web почты с Roundcube, где проводил необходимый анализ по адресу отправителя, получателя и полю subject с использованием в том числе регулярных выражений.
основной-емейл -> filter -> action[копирование на специальный ящик] Когда вся нужная почта находится в почтовом ящике для почтового автомата можно настраивать fetchmail.

Настройка fetchmail

Установка необходимых утилит

Установим сам fetchmail

# yum install fetchmail

Для обработки почты будем использовать procmail

# yum install procmail

Для извлечения аттачментов из писем и складывания в отдельную папку

# yum install uudeview

Для работы с сертификатами нужно установить openssl

# yum install openssl

и если не установлен c_rehash

# yum install openssl-perl

получим самый первый по очерёдности сертификат и сохраним его в файл

$ echo «quit» | openssl s_client -connect pop.gmail.com:995 -showcerts 2>&1 | awk '/^[-]+BEGIN CERTIFICATE[-]+$/,/^[-]+END CERTIFICATE[-]+$/ {if (/^[-]+BEGIN CERTIFICATE[-]+$/) { count=count+1; flag=1 } if (count==1 && flag==1) { print $0 } if (/^[-]+END CERTIFICATE[-]+$/) { flag=0 }}' > gmail.com.pem

Утилиту c_rehash необходимо запускать после каждого добавления или изменения файла сертификата (он создаёт хеш-именной симлинк на каждый файл с сертификатом)

$ c_rehash $HOME/.fetchmailsslcerts/

получить строки для добавления в файл $HOME/.fetchmailrc

$ MYPATH=».fetchmailsslcerts»; openssl x509 -in $HOME/${MYPATH}/gmail.com.pem -noout -md5 -fingerprint | cut -d '=' -f2,2 | awk -v path=${MYPATH} '{print «sslcertpath «path»
sslfingerprint «$0}' sslcertpath .fetchmailsslcerts sslfingerprint 61:D4:A7:53:76:48:CA:84:4B:90:AD:7C:B5:CB:B4:B6

У меня отключен IPv6 поэтому чтобы не раздражала ошибка Trying to connect to ::1/25…connection failed. fetchmail: connection to localhost:smtp [::1/25] failed: Connection refused. мне пришлось в файле /etc/hosts закоментировать строку

#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

Источник: http://youngblog.hoster-ok.com/ispolzuem-fetchmail-dlya-avtomatizatsii-razbora-pochty/

Данные из почтовых вложений: автоматизируем загрузку в Qlik

Бывают случаи, когда данные вы получаете через вложение электронной почты – например, вы работаете в FMCG или фармацевтической компании и еженедельно (ежемесячно) получаете отчеты в едином формате по почте от дистрибьюторов. Сегодня расскажу о способе автоматизации выгрузки таких данных из ящика сразу в QlikView или Qlik Sense.

НА ЗАМЕТКУ! Для удобства работы, предлагаю вам обзавестись отдельным адресом для получения данных.

Вариант №1: макрос

Процесс

  1. Данные запускаются через скрипт ежедневно.
  2. Письмо приходит регулярно в одно и то же время (с разницей в 5 минут).
  3. Письмо приходит, а вложение (источник данных) сохраняется на сетевой диск.
  4. Планировщик QlikView стартует через 20 минут после получения письма и обновляет данные в модели.

Макрос

12345678910111213141516171819 Public Sub qlikviewSaveExternal(itm As Outlook.MailItem)Dim objAtt As Outlook.AttachmentDim saveFolder As StringsaveFolder = «\eundas01Apps_UsrQlikview_DataCOMPANY»For Each objAtt In itm.Attachmentsif InStr(objAtt.DisplayName, «.csv») ThenobjAtt.SaveAsFile saveFolder & «» & objAtt.DisplayNameend ifNextEnd Sub

Формат файла можно заменить на тот, в котором у вас приходят источники данных.

За и против

Недостаток такого решения, что скрипт нужно запускать через правило в Outlook, а Outlook должен быть запущен постоянно. Т.е. если мы говорим о полной автоматизации процесса, есть одно ограничение (необходимость работы Outlook 24/7), т.к. схема не может работать как автоответ.

Установка правил

Как установить правила в почте – каждый решает сам. У меня почтовый клиент настроен на проверку двух вещей:

  1. Тема письма
  2. Наличие вложения

Вот и все! Такой скрипт поможет автоматически загружать данные в QlikView.

Вариант №2: Qlik Mailbox Коннектор

С недавнего времени появился второй бесплатный способ автоматизации загрузки вложений из электронных писем в QlikView – при помощи Qlik Mailbox Коннектора. Подключение происходит при помощи POP3 and IMAP, что безусловно удобно.

В зависимости от задачи, вас будут интересовать опции в коннекторе:

  • ImapMessageAttachments или Pop3MessageAttachments
  • ImapMessageDownloadAttachment или Pop3MessageDownloadAttachment
  • ImapMessageGetAttachmentAsText или Pop3MessageGetAttachmentAsText
  • ImapMessageGetAttachmentAsBinary или Pop3MessageGetAttachmentAsBinary

Пример скрипта для Коннектора

Пример скрипта для скачивания всех вложений со всех e-mail-ов в определенной папке на локальную машину для загрузки в Qlik:

SET ThousandSep=’,’;
SET DecimalSep=’.’;
SET MoneyThousandSep=’,’;
SET MoneyDecimalSep=’.’;
SET MoneyFormat=’£#,##0.00;-£#,##0.00′;
SET TimeFormat=’hh:mm:ss’;
SET DateFormat=’DD/MM/YYYY’;
SET TimestampFormat=’DD/MM/YYYY hh:mm:ss[.fff]’;
SET MonthNames=’Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec’;
SET DayNames=’Mon;Tue;Wed;Thu;Fri;Sat;Sun’;
NOTE – In this script the server, username, password etc. have been
stripped from the request URLs as the connector will then
automatically pick out those configured in the connector UI.
*******************************************************************/
//
// QlikView/Qlik Sense must have write access to this location.
//
let vDownloadFolder = ‘C:UsersYOUR_USER_NAMEDesktop’;
//
// Edit this if you running Qlik Web Connectors on a different port.
//
let vQlikWebConnectorBase = ‘http://localhost:5555/web’;
//
// Email folder to process.
//
let vFolderToSearch = ‘Inbox’;
MessagesInFolder:
LOAD
id,
UID,
inReplyTo,
folder,
to,
cc,
bcc,
from,
subject,
sent,
text,
html,
size,
attachments,
gmailMessageId,
gmailThreadId,
gmailLabels
FROM
[$(vQlikWebConnectorBase)/QlikMailBoxConnector/?table=ImapMessagesInFolder&appID=&Folder=$(vFolderToSearch)]
(qvx) where attachments > 0;
Let noRows = NoOfRows(‘MessagesInFolder’);
for i=0 to $(noRows)-1
let vID = peek(‘id’,$(i),’MessagesInFolder’);
let vUID = peek(‘UID’, $(i), ‘MessagesInFolder’);
let vFolder = peek(‘MessagesInFolder’, $(i), ‘MessagesInFolder’);
Attachments:
LOAD
‘$(vID)’ as id,
‘$(vUID)’ as AttachmentUID,
‘$(vFolder)’ as AttachmentFolder,
FileName as AttachmentFileName
FROM
[$(vQlikWebConnectorBase)/QlikMailBoxConnector/?table=ImapMessageAttachments&appID=&Folder=$(vFolder)&MessageID=$(vUID)]
(qvx) where FileName ”;
NEXT
LET noRows = NoOfRows(‘Attachments’);
for i=0 to $(noRows)-1
let vID = peek(‘id’,$(i),’Attachments’);
let vFolder = peek(‘AttachmentFolder’, $(i), ‘Attachments’);
let vUID = peek(‘AttachmentUID’, $(i), ‘Attachments’);
let vFilename = peek(‘AttachmentFileName’, $(i), ‘Attachments’);
//
// Note – we use the UID here as we need something unique to prevent attachments with the same name overwriting previous ones.
//
let vTarget = ‘$(vDownloadFolder)$(vUID)_$(vFilename)’;
trace ‘About to download $(vFilename) in email $(vUID) to $(vTarget)’;
Downloads:
LOAD
‘$(vID)’ as id,
‘$(vUID)’ as Downloads_UID,
Status as Downloads_Status,
‘$(vFilename)’ as Downloads_Filename
FROM
[$(vQlikWebConnectorBase)/QlikMailBoxConnector/?table=ImapMessageDownloadAttachment&appID=&MessageID=$(vUID)&AttachmentFileName=$(vFilename)&TargetPath=$(vTarget)&Folder=$(vFolder)]
(qvx);
next i

О Qlik Mailbox Коннекторе можно прочитать в нашем обзоре бесплатных веб-коннекторов Qlik (ранее – QVSource) или в официальном хэлпе Qlik.

На этом на сегодня все! Хороших вам разработок!

Источник: http://blog.atkcg.ru/dannye-iz-pochtovyx-vlozhenij-avtomatiziruem-zagruzku-v-qlik/

Отправка с сервера писем с вложениями. Утилита mutt

(детали ниже)
Сегодня я расскажу как можно отправлять с сервера нотификации себе на почту с вложениями (что понятно из заголовка=).

Если у вас на сервере производится какой-либо мониторинг, то получать особо важные нотификации хочется как можно быстрее, даже если вы находитесь не за компьютером. Смартфоны сейчас есть у большинства. По этому одним из вариантов получения экстренных нотификаций будет – получение email-ов.

Можно настроить на своём почтовом клиенте получение писем через push уведомления и новое письмо будет у вас на телефоне как только его вам отправят.

Со способом получение важной информации разобрались, теперь нужно научиться отправлять её с сервера где осуществляется мониторинг.

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

В моём случае требуется получение информации о том что камера что-то задетектила как можно быстрее, плюс хотелось бы чтобы в этой информации были примеры снимков (один-два)- да бы сразу понять кого задетектила камера.

Мне не хочется подключаться к серверу по фтп и не проверять все загруженные файлы. Обычно это не меньше 10-15 снимков. Это не удобно. По этому пара снимков в почте самое то.

Итого задача следующая – в случае если на сервер камера загрузила новые снимки – переслать несколько мне на почту. Для решения данной задачи я написал следующий скрипт:

$ cat monitoringscript.sh #!/bin/bash # Declare variables. declare -i DefaultTime=10003 tempCurrentTime=`date +%H%M` CurrentTime=`echo «1$tempCurrentTime»` declare -i NumberToSend=0 FileToSend=»Null» FuleToSendFullPath=»Null»

declare -i DefaultNumberOfFiles=`find /home/camerahome/snapshots/FI9821P_00626E55E3A3/snap -type f | wc -l`

while [ $DefaultTime -le $CurrentTime ] do CurrentNumberOfFiles=`find /home/camerahome/snapshots/FI9821P_00626E55E3A3/snap -type f | wc -l` if [ $CurrentNumberOfFiles -eq $DefaultNumberOfFiles ] then sleep 60 elif [ $CurrentNumberOfFiles -gt $DefaultNumberOfFiles ] then NumberToSend=$(( ( $CurrentNumberOfFiles — $DefaultNumberOfFiles ) / 2 )) FilesNamesArray=( `ls -t /home/camerahome/snapshots/FI9821P_00626E55E3A3/snap` ) FileToSend=${FilesNamesArray[$NumberToSend]} FuleToSendFullPath=`echo «/home/camerahome/snapshots/FI9821P_00626E55E3A3/snap/${FilesNamesArray[$NumberToSend]}»` # debug lines # echo -e »
This is a elif section CurrentNumberOfFiles=$CurrentNumberOfFiles >= DefaultNumberOfFiles=$DefaultNumberOfFiles ; NumberToSend=$NumberToSend ; FilesNamesArray=$FilesNamesArray ; FileToSend=$FileToSend ; FuleToSendFullPath=$FuleToSendFullPath» # end of debug DefaultNumberOfFiles=$CurrentNumberOfFiles mutt -s «HomeCamera is reporting — MovementDetected, see attachment» МойМейл@bk.ru -a $FuleToSendFullPath < /home/camerahome/snapshots/Message.txt mutt -s "HomeCamera is reporting - MovementDetected, see attachment" МойМейл@gmail.com -a $FuleToSendFullPath < /home/camerahome/snapshots/Message.txt sleep 45 elif [ $CurrentNumberOfFiles -lt $DefaultNumberOfFiles ] then DefaultNumberOfFiles=$CurrentNumberOfFiles sleep 5 else echo -e " Something Strange. Here is a dump: DefaultTime=$DefaultTime ; CurrentTime=$CurrentTime ; NumberToSend=$NumberToSend ; CurrentNumberOfFiles=$CurrentNumberOfFiles ; DefaultNumberOfFiles=$DefaultNumberOfFiles > /home/camerahome/snapshots/CameraScript_error_log.txt» sleep 30 fi tempCurrentTime=`date +%H%M` CurrentTime=`echo «1$tempCurrentTime»`

done

exit 0 По умолчанию данный скрипт каждую минуту проверяет наличие новых файлов (можно сделать и чаще). Если есть новые файлы – отправляет письмо, если файлов нет – ждёт следующую минуту.

Так как я ещё не научился делать сервисы – я сделал скрипт который запускается по крону и работает в фоне.

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

Я сделал это ночью – так как ночью я меньше всего ожидаю получение каких-либо данных с камеры – я практически всегда ночью дома и камера ничего не фиксирует.

Читайте также:  Вопросы и ответы на компьютерную тематику. faq по компьютерам и серверам

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

Всё дело в том что я использую утилиту date для получения текущего значения времени. Утилита date выдаёт данные в виде HM (0000 ; 1024 ; 1512 ; 2359) – лично меня они интересуют в таком виде.

В полночь когда значение переходит от 23 часов к нулю в переменную с текущим значением времени записываются значения вида 0000, 0001.

В значении сохраняемом в переменной на первом месте стоит ноль, это вызывает сбой так как я сравниваю с десятичным числом – для обхода данной проблемы я формирую значение переменной текущего времени путём добавления единицы перед информацией получаемой из утилиты date – есть и другие методы решения данной проблемы – точное определение содержимого переменной как десятичного (в баше я не нашёл подходящего решения – если вы знаете – напишите, пожалуйста в комментариях), так же можно удалять нули в значении переменной – те что стоят в самом начале. Я лично выбрал добавление в начале единицы – решение простое, работает стабильно и в итоге скрипт делает то что мне нужно.
Если время позволяет [ $DefaultTime -le $CurrentTime ] – скрипт работает. Далее происходит считывание количества файлов в директории куда происходит загрузка снимков камерой. Если текущее количество файлов больше того количества что было минуту назад – происходит отправка письма.
Количество файлов определяется с использованием утилиты find и wc.

Если скрипт определил, что нужно отправлять письмо, то нужно понять какой снимок нужно отправлять – отправлять самый новый снимок неправильно.

Там обычно ничего нет – движение уже закончилось или объект уже выходил из кадра – кусок руки, головы или тп получать не имеет смысла – правильнее всего отправить какой-либо снимок из середины новых файлов. Например, было десять файлов, стало 20 – значит нужно отправить 15й.

Это осуществляется следующей конструкцией с использованием списков ‘FilesNamesArray‘. Так как файлы сортируются от самого нового, получается обратный подсчёт, по этому отправляется не 15, а 5 файл (обратный порядок).

Далее выбранный файл передаётся утилите mutt, она отправляет письмо заранее заданному получателю.

Установка mutt очень проста, перейдёт сразу к настройке. Настройки хранятся индивидуально для каждого пользователя в его домашнем каталоге. Вот пример моих настроек – содержимое файла настроек так же есть в посте у меня на сайте

$ cat ~/.muttrc set imap_user = «UserNamegmail.com»

set imap_pass = «YourAccountPassword»

#set smtp_url = «smtp://UserNamesmtp.gmail.com:587/» set smtp_url = «smtps://UserNamegmail.com@smtp.gmail.com:465/» set smtp_pass = «YourAccountPassword» set from = «UserNamegmail.com»

set realname = «Alexander Yakovlev»

#To use TLS you should add also the following directives: set ssl_starttls=yes

set ssl_force_tls=yes

set folder = «imaps://imap.gmail.com:993» set spoolfile = «+INBOX»

set postponed=»+[Gmail]/Drafts»

set header_cache=~/.mutt/cache/headers set message_cachedir=~/.mutt/cache/bodies

set certificate_file=~/.mutt/certificates

set move = no
Тут нужно указать имя вашего smtp сервера, используемый порт, логин и пароль. Всё достаточно просто. Для данной задачи я завёл отдельный почтовый ящик. Иногда может возникнуть проблема с устареванием используемых мейл клиентов.

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

Протоколы, сертификаты для работы почты постоянно усовершенствуются, старые версии периодически становятся устаревшими и больше не поддерживаются, например, Гуглом.

Для обхода таких ограничений у того же Гугла есть позможность активации специального режима вашего аккаунта в котором будут поддерживаться устаревшие версии. По этому если у вас вдруг перестанет или не будет работать на сервере какой-либо мейл клиент, попробуйте активировать данную опцию на своём мейл сервисе (Allow less secure app).

Allowing less secure apps to access your account.

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

Возвращаемся обратно к скрипту.
В самом скрипте для отправки письма нужно вызвать утилиту mutt, передать ей адрес получателя, тему письма, указать путь к файлу вложения. Так же можете передать текст письма, он может храниться в отдельном файле.

Конечно содержимое этого файла может формироваться отдельно, например, вашим же скриптом, добавляться какая-то индивидуальная информация – если у вас много камер то информация о той камере которая сработала, Если у вас сервер логирования, то часть лога, сгенерировавшего алерт, возможно что-то ещё.
mutt -s «HomeCamera is reporting — MovementDetected, see attachment» МойМейл@bk.ru -a $FuleToSendFullPath < /home/camerahome/snapshots/Message.txt
Настраивать интервал сканирования новых файлов данным скриптом можно произвольно — хоть каждую секунду, регулировать это можно с помощью команды sleep.

Есть ещё два замечания — для более оптимальной работы скрипта, для увеличения скорости его работы и уменьшения потребляемой памяти желательно иметь как можно меньше файлов у вас в директории со снимками (если у вас там будут тысячи файлов, то скрипту придётся обрабатывать очень много файлов, нежели если бы там было пара десятков) — по этому результаты каждого дня лучше переносить в отдельную директорию. О том как это настроено у меня — я рассказывал в своём предыдущем видео о настройке FTP для системы видео наблюдения. Это было первое замечание.
Второе. Если вы как и я используете FTP в связке с mutt или любым другим клиентом которому необходим доступ к файлам в домашней директории, то вам нужно будет создать симлинк на этот файл, сам файл перенести в поддиректорию. Как вы видите на экране — файл sent ссылается на файл в поддиректории. Так как записывать в домашнюю директорию пользователь не может по соображениям безопасности FTP доступа, а программе mutt нужен доступ к файлу sent находящийся в домашней директории пользователя, то мне пришлось создать симлинк на этот файл.

На этом всё. Задавайте свои вопросы в комментариях или во вконтакте. Если понравилось — Подписывайтесь на канал и расскажите о моём канале своим друзьям.

Удачи!

Использованные ссылки:
Allowing less secure apps to access your account.
Why use user@privatedomain@smtp.gmail.com in Mutt configuration file?
Using Gmail with mutt, the minimal way (IMAP update)

Источник: http://it-inside.org/2015/11/send-email-with-attachments-from-a-server-mutt-utility/

Linux/BSD Проще не бывает!

Так уж сложилось исторически что у меня около 10 email адресов. Потихоньку-помаленьку в силу разных нужд и обстоятельств заводились то один то второй

Источник: http://diff.org.ua/archives/180

Андрей Аносов

Как известно, в Ubuntu по умолчанию не установлены пакеты для отправки email. Таким образом при использовании Ubuntu в качестве системы для веб-разработки возникает проблема, что стандартная функция mail() в PHP работать не будет (будет всегда возвращать false).

Кроме того при веб-разработке было бы полезным не просто отправлять почту с компьютера разработчика, а иметь почтовую заглушку по аналогии с той заглушкой, которая есть в пакете Denwer в Windows.

Другими словами сейчас мы будем настраивать возможность отправки писем функцией mail() в локальный каталог на компьютере веб-разработчика в виде текстовых файлов в формате eml. Особенно удобной будет такая почтовая заглушка при верстке почтовых рассылок.

Изначально описание того, как сделать почтовую заглушку в Ubuntu было найдено на Хабре.

Сначала нужно создать shell-скрипт /usr/bin/fakesendmail.sh со следующим содержимым:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
prefix=»/var/mail/sendmail/new»
numPath=»/var/mail/sendmail»
 
if [ ! -f $numPath/num ]; then echo «0» > $numPath/num fi num=`cat $numPath/num` num=$(($num + 1)) echo $num > $numPath/num  
name=»$prefix/letter_$num.txt»
while read line do echo $line >> $name
done chmod 777 $name
/bin/true

Сделаем только что созданный скрипт исполняемым и назначим его владельцем пользователя root:

sudo chown root:root /usr/bin/fakesendmail.sh
sudo chmod 755 /usr/bin/fakesendmail.sh

Для удобного сбора писем почтовой программой (мы будем использовать для этого Evolution, который установлен в Ubuntu по умолчанию) нужно создать особую структуру каталогов и дать права на запись в них:

sudo mkdir /var/mail/sendmail
cd /var/mail/sendmail
sudo mkdir cur
sudo mkdir new
sudo mkdir tmp
sudo chmod -R 777 /var/mail/sendmail

Далее остается только настроить PHP на работу с новым скриптом-заглушкой. В зависимости от настроек веб-сервера нужно найти файл php.ini и исправить в нем директиву sendmail_path. Если используется веб-сервер Apache, то файл с настройками php следует искать по пути /etc/php5/apache2/php.ini. А вот при использовании Nginx с FastCGI настройки нужно искать по пути /etc/php5/cgi/php.ini.

; For Unix only. You may supply arguments as well (default: «sendmail -t -i»).
; http://php.net/sendmail-path
sendmail_path = /usr/bin/fakesendmail.sh

Последний шаг — настройка Evolution. В нем нужно создать новую учетную запись. При этом можно указать любой email-адрес, например, test@example.org. Далее следует выбрать тип сервера «Почтовые каталоги в формате Maildir» и в качестве пути к каталогу с почтой нужно указать «/var/mail/sendmail». В диалоговом окне «Отправка почты» следует указать тип сервера «Sendmail».

Таким образом в Ubuntu можно настроить почтовую заглушку по аналогии с той, которая есть в пакете Denwer в Windows.

Источник: http://anosov.me/2011/09/sendmail-dummy-in-ubuntu/

Выбираем веб-клиент для электронной почты — «Хакер»

Содержание статьи

Сегодня нередко у одного пользователя сразу несколько устройств. Это, несомненно, удобно, но вызывает и проблемы, которые решаются синхронизацией данных или размещением данных в облаке. Именно поэтому веб-клиенты электронной почты снова становятся востребованными.

RainLoop — легкий, современный и красивый веб-клиент электронной почты, разработанный специально с прицелом на малое потребление памяти и использование на low-end серверах.

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

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

Встроенная система кеширования позволяет повысить общую производительность и снизить нагрузку на веб и почтовые серверы. Хотя в зависимостях указана СУБД (MySQL, PostgreSQL, SQLite…), она задействуется исключительно для хранения данных контактов.

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

Читайте также:  Logrotate freebsd. как настроить ротацию логов во freebsd

В настройках уже есть привязка к Gmail, Yahoo, Outlook.com и qq.com. То есть фактически после установки RainLoop пользователи могут сразу, без дополнительных настроек, подключаться к этим серверам, используя свои учетные записи. Добавить любой сервер можно за пару кликов. Чтобы ограничить подключения к почтовым серверам, используются белые списки.

Но у такого подхода есть и минус — нельзя объединить несколько ящиков и получать к ним доступ с одного места, для каждой учетной записи потребуется открыть свое окно.

Поддерживает IMAP- и SMTP-протоколы, включая защищенные SSL и STARTTLS. Возможно шифрование сообщений при помощи OpenPGP и управление ключами (импорт и создание новых).

Интерфейс локализован. Причем это могут быть как корпоративные, так и публичные серверы.

Поддерживаются многие функции настольного приложения drag and drop, горячие клавиши, автозавершение адресов, виртуальные папки, импорт и экспорт контактов (CSV, VCF и vCard).

Пункты меню позволяют произвести все необходимые операции с сообщением: отредактировать, переслать, пометить как спам, распечатать, скачать в виде eml-файла.

Источник: https://xakep.ru/2014/09/09/web-mail-clients-review/

Автоматизация процесса массового создания почтовых ящиков в Яндекс почта для домена

Появилась необходимость воспользоваться таким сервисом как «Почта для домена» от Яндекса, а именно нужно было как то с минимизацией затраты жизненных ресурсов проработать скрипт по массовому созданию почтовых ящиков и заполнения их профилей.

Для управления почтой Яндекс предоставляет API Почты для домена (подробней про API можно почитать тут), вот им мы как раз и воспользуемся для реализации нашей задачи. Писать скрипт будем на bash из под Ubuntu server 14.04.4 LTS.

Итак в моем распоряжение есть список с адресами которые необходимо создать в Яндекс Почта для домена, адреса в текстовом файле выглядят так:

test@test.ru test@test.ru test@test.ru test@test.ru … и т.д.

Если же у вас такого списка нет, то создаем его

nano emailuserlist

И заносим в него адреса все которые необходимо будет создать. Далее для работы скрипта нужно получить PDD Token для администратора (получить его можно для вашего домена можно тут).

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

Готовый скрипт выглядит вот так. Скрипт с комментариями и разобраться в нем не должно составить труда.

#!/bin/bash # ==== Переменные для создания ящиков ====================== # Путь к списку пользователей USRLIST='/home/admin/YandexMailControl/emailuserlist' # Временный файл для обработки имен и фамилий TEMP='/home/admin/YandexMailControl/temp' # Название домена DOMAIN=»test.com» # PDD Token TOKEN=»4GQAO6O3ZTNHYL6FNQ000000000000000000000000000000″ # Пароль по умолчанию PASS=»Aa1234567″ # ========================================================== # ==== Переменные для внесения данных в ящики ============== # Секретный вопрос QUESTION=»vopros» # Секретный ответ ANSWER=»otvet» # ========================================================== # Из созданного временного файла убираем название домена в строках если оно присутствует sed -i 's/[[:blank:]]*@'$DOMAIN'//' $USRLIST # Перебираем циклом файл с списком пользователей и создаем почтовый ящик по каждому из них for i in $( cat $USRLIST ); do # Создаем ящик curl -H 'PddToken: '$TOKEN -d 'domain='$DOMAIN'&login='$i'&password='$PASS 'https://pddimp.yandex.ru/api2/admin/email/add' # Заносим во временный файл текущий логин от почты echo $i > $TEMP # Получаем значения имени и фамилии для заполнения профиля FIRSTNAME=$(awk -F».» '{ print $1 }' $TEMP) LASTNAME=$(awk -F».» '{ print $2 }' $TEMP) # Делаем проверку если логин состоит из одной строки, то LASTNAME будет пустым, в этом случае подставим FIRSTNAME. Редактируем профили. if [ -z «$LASTNAME» ]; then curl -H 'PddToken: '$TOKEN -d 'domain='$DOMAIN'&login='$i'&password='$PASS'&iname='$FIRSTNAME'&fname='$FIRSTNAME'&hintq='$QUESTION'&hinta='$ANSWER 'https://pddimp.yandex.ru/api2/admin/email/edit' else curl -H 'PddToken: '$TOKEN -d 'domain='$DOMAIN'&login='$i'&password='$PASS'&iname='$FIRSTNAME'&fname='$LASTNAME'&hintq='$QUESTION'&hinta='$ANSWER 'https://pddimp.yandex.ru/api2/admin/email/edit' fi # Удаляем временный файл rm $TEMP done echo «Задание выполнено!»

Скрипт проходится по каждый строке текстового файла с адресами и создает почтовый ящик, после создания начинается заполнение профиля созданного ящика, т.е. исходя из того какой логин у ящика (прим. name.lastname@test.

ru) будет подстановка в поля «Имя» и «Фамилия» вида Имя — name, Фамилия — lastname. Если же логин вида name@test.ru, то в поле Имя и Фамилия будет подставлено name.

Так же для созданного ящика будет задан секретный вопрос и ответ на него, тот который вы зададите в скрипте.

После того как скрипт отработает, то останется зайти в каждый созданный ящик и завершить регистрацию. Да это геморно, но это единственный путь. С помощью средств API этого сделать нельзя (узнавал у тех. поддержки Яндекса).

(Еще нет оценок)
Загрузка…

Источник: http://jakondo.ru/avtomatizatsiya-protsessa-massovogo-sozdaniya-pochtovyh-yashhikov-v-yandeks-pochta-dlya-domena/

Прием и отправка почты из командной строки

Библиотека сайта rus-linux.net

Оригинал: Linux mail command examples — send mails from command line Автор: Silver Moon Дата публикации: 27 августа 2013 года Перевод: А. Кривошей

Дата перевода: декабрь 2013 г.

Обычно для приемки и отправки почты используются веб-сервисы типа gmail и yahoo, или графические почтовые клиенты. Однако в linux мы можем также отправлять или получать почту в командной строке.

Это полезно в таких ситуациях, как отправка почты из скриптов, или в случаях, когда графическая оболочка недоступна.

В этом руководстве описывается, как использовать команду mail для приема и отправки почты.

Отправка почты

В зависимости от дистрибутива, который вы используете, может понадобиться установить дополнительные пакеты, такие как mailutils, чтобы команда mail нормально работала.

Пользователи Debian/Ubuntu могут воспользоваться командой apt-get:

# apt-get install mailutils

Пользователи Fedora / CentOS / Red Hat Enterprise Linux (RHEL) могут сделать это с помощью yum:

Теперь команда mail должна быть готова к работе.

Выполните приведенную ниже команду, заменив «user@yourmaildomain.com» на свой адрес электронной почты. Опция s задает тему письма.

$ mail -s «Hello World» user@yourmaildomain.com

Теперь вы можете вводить текст письма. Когда закончите, нажмите «control-D» в начале новой строки.

# mail -s «This is the subject» m00n.silv3r@gmail.com
Cc: Hi Silver
How are you doing
Hope its going fine.
Bye

Вы отправили первое письмо из командной строки. Содержимое письма можно вставить из файла. В некоторых дистрибутивах командная оболочка сначала запросит в интерактивном режиме ввод других полей, таких как «Cc» (Carbon copy).

Просто нажимайте «Enter», чтобы пропустить этот этап. Когда вы введете адрес или адреса электронной почты, необходимо нажать «Enter», чтобы перейти на новую строку, к телу письма.

После нажатия Ctrl+D вы возвращаетесь в командную строку без каких либо дополнительных оповещений. Однако ваше письмо было отправлено.

Интересно, что если вы ничего не введете в теле письма и нажмете Ctrl+D, команда mail отреагирует на это:

# mail -s «This is the subject» m00n.silv3r@gmail.com
Cc: Null message body; hope that's ok

Если тело письма хранится у нас в отдельном файле, мы можем напрямую использовать его для отправки письма. Это полезно при вызове команды mail из скриптов, или других программ, написанных, например, на perl или php.

$ mail -s «Hello World» user@yourmaildomain.com < /home/user/mailcontent.txt

Или быстрая отправка письма одной строкой:

# echo «This is the message body» | mail -s «This is the subject» m00n.silv3r@gmail.com

Другие полезные параметры команды mail:

-s subject (тема письма) -c email-address (CC — отправка копии письма по адресам email-address)

-b email-address (BCC — отправка скрытой копии письма по адресам email-address)

Ниже пример использования этих опций:

$ mail -s «Hello World» user@yourmaildomain.com -c usertocc@yourmaildomain.com -b usertobcc@yourmaildomain.com

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

$ mail -s «Hello World» user1@yourmaildomain.com,user2@yourmaildomain.com

Указать адрес отправителя тоже несложно, но здесь есть своя хитрость. После отправляемого письма необходимо добавить перед своим адресом следующую последовательность символов:

(двойное тире) (пробел) (одинарное тире) (без пробела) f

Ниже пример:

$ mail -s «Hello World» user@yourmaildomain.com — -f from_user@yourmaildomain.com

Однако приведенная выше последовательность может работать в centos, но не в debian или ubuntu. В этих системах используется альтернативный синтаксис:

# echo «This is the message body» | mail -s «This is the subject» m00n.silv3r@gmail.com -aFrom:blog@binarytides.com

Опция a в целом добавляет дополнительные заголовки. Чтобы задать с ее помощью отправителя, используется следующий синтаксис:

# echo «This is the message body» | mail -s «This is the subject» m00n.silv3r@gmail.com -aFrom:Blogger

Обратите внимание, что бы экранируем угловые скобки, так как они могут иметь свое назначение для командной оболочки.

Отправка писем с вложениями

Команда mail используется до сих пор, так как это простой и быстрый способ отправки писем, однако она, к сожалению, не поддерживает отправку вложений. Теперь мы сделаем следующий шаг и откроем для себя MUTT. Это очень мощный консольный почтовый клиент, и он умеет намного больше, чем просто отправка писем с вложениями, но в данном случае нас интересует именно эта возможность.

Если mutt по умолчанию у вас не установлен, вы можете сделать это с помощью apt-get или yum от имени root (или используя sudo):

Для пользователей Debian / Ubuntu:

Для пользователей Fedora / CentOS или Red Hat Enterprise Linux (RHEL):

Теперь вы можете отправлять письма с вложениями из командной строки.

Отправка простого письма:

# echo «This is the message body» | mutt -s «hello» m00n.silv3r@gmail.com

Отправка письма с вложением:

$ mutt -s «Hello World» -a /home/user/file_to_attach.tar.gz user@yourmaildomain.com < home/user/mailcontent.txt

Все просто.

Отправка писем из скриптов bash/shell

Теперь давайте копнем глубже и попробуем отправить письмо из скрипта оболочки. Ниже простой скрипт, отправляющий информацию по использованию диска.

#!/bin/bash
du -sh | mail -s «disk usage report» user@yourmaildomain.com

Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».

И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов.

Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:

#!/bin/bash
tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup
echo «Archived configuration files» | mutt -a /home/user/backup.tar.gz -s «backup data» user@yourmaildomain.com

Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.

Чтение писем

До сих пор мы рассматривали отправку писем из командной строки. На самом деле также легко можно читать письма из командной строки:

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

$ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
«/var/spool/mail/hcg»: 2 messages 2 new
>N 1 hcg@hcghost.localdomain Thu Aug 1 16:53 81/3034 «Hello World»
N 2 hcg@hcghost.localdomain Thu Aug 1 16:54 82/3061 «disk usage report»
&

Читайте также:  Openvpn на linux ubuntu — установка и настройка сервера

Первая строка вывода — это версия программы mail. Вторая строка говорит о том, что имеется два сообщения, оба непрочитанные, и почта хранится в файле /var/spool/mail/hcg. У всех пользователей linux файл с почтой находится в директории /var/spool/mail/.

При получении нового письма оно добавляется в конец этого файла. После информации о файле выводится список писем. Настоятельно рекомендуется не редактировать этот файл без использования mail или аналогичной программы.

Читать или производить поиск писем лучше всего с помощью grep.

Чтобы прочитать первое письмо, просто введите 1 и нажмите enter. При чтении письма, если вам необходимо вернуться к списку писем, просто нажмите «q». Символ > показывает, какое из писем в настоящее время является текущим.

Команда Maildir-utils

«mu» — это набор утилит командной строки для Linux/Unix, который позволяет производить быстрый поиск писем.

Пользователи Debian/Ubuntu могут установить его с помощью apt-get:

# apt-get install maildir-utils

Пользователи Fedora / CentOS / Red Hat Enterprise Linux (RHEL) могут использовать yum:

# yum install maildir-utils

Ниже пара простых команд из этого пакета:

$ mu find from:william subject:report

для поиска писем от william с темой report.

Чтобы проверить текущие настройки почты, используется опция info.

# mu-tool info
VERSION=2.99.97
SYSCONFDIR=/etc
MAILSPOOLDIR=/var/mail/
SCHEME=mbox
LOG_FACILITY=mail
…..

Итак, можно подвести итоги. На самом деле получение и отправление писем из командной строки не представляет особой сложности, если вы знаете, что делаете.

Если вам понравилась статья, поделитесь ею с друзьями:

Источник: http://rus-linux.net/MyLDP/consol/mails.html

Скрипт вытаскивания вложений из писем и сохранение в папку

Вопрос: Скрипт вытаскивания вложений из писем и сохранение в папку

Есть скрипт:

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env python
 
import getpass, imaplib, email, os, datetime
from email import parser
from dateutil import parser
import subprocess
 
M = imaplib.IMAP4('mail.domen.ru')
M.login('test@domen.ru', 'test')
M.select()
typ, data = M.search(None, 'ALL')
 
counter = 1
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    email_body = data[0][1] # getting the mail content
    mail = email.message_from_string(email_body) # parsing the mail content to get a mail object
 
    #Check if any attachments at all
    if mail.get_content_maintype() != 'multipart':
        M.store(num, '+FLAGS', '\Deleted')
        continue
 
    # we use walk to create a generator so we can iterate on the parts and forget about the recursive headache
    for part in mail.walk():
        # multipart are just containers, so we skip them
        if part.get_content_maintype() == 'multipart':
            detach_dir = '/home/1/'
 
            if not os.path.isdir(detach_dir):
                os.makedirs(detach_dir)
            continue
 
        # is this part an attachment ?
        if part.get('Content-Disposition') is None:
            continue
 
        filename = part.get_filename()
 
        # if there is no filename, we create one with a counter to avoid duplicates
        if not filename:
            filename = 'part-%03d%s' % (counter, 'bin')
            counter += 1
 
        att_path = os.path.join(detach_dir, filename)
 
        #Check if its already there
        if not os.path.isfile(att_path) :
            # finally write the stuff
            fp = open(att_path, 'wb')
            fp.write(part.get_payload(decode=True))
            fp.close()
 
    M.store(num, '+FLAGS', '\Deleted')
 
M.close()
M.logout()

Проблема в следующем. Некоторые письма (с некоторых доменов) отрабатываются отлично. А из некоторых доменов скрипт не может выцепить название файла. Пример письма с которым нет проблем (часть исходного кода):

Кликните здесь для просмотра всего текста

——=_Part_0_43907500.1477904286916 Content-Type: application/octet-stream; name=ABCD#106_7466_02.ROP Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ABCD#106_7466_02.ROPА вот пример с проблемным письмом, например с @inbox.ru (часть исходного кода):

Кликните здесь для просмотра всего текста

——EeRQP9SYgH48MQKl0zZs8RNaNcrJ7nfT-V7K9yFlyuDObhXUP-1477900264 Content-Type: application/octet-stream; name=»=?UTF-8?B?Q09OUyMxMDZfNTU1NTQ3LlVTUg==?=» Content-Disposition: attachment Content-Transfer-Encoding: base64Подозреваю, что именно в этом проблема, имя файла закодировано. Помогите решить проблему.

ЗЫ: Предыстория проги:

Ответ:

Сообщение от pyuser

У меня работает

Это из-за версии питона?

Вопрос: Сохранение вложений писем Outlook в другую папку Outlook ( не на жестком диске)

Доброй ночи!Собственно приходят письма outlook в которые вложены письма outlook. Вложенные письма Пользователю необходимо просмотреть/проверить и отправить. Если открывать эти письма из самого письма то кнопка для отправки неактивна. Пользователь вынужден сохранить эти письма в другой папке outlook (например Черновики) и затем отправлять.

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

Заранее спасибо! Sub SaveAtt() Dim oMail As MailItem Set oMail = Outlook.Application.ActiveExplorer.Selection(1) Dim att As Attachment For Each att In oMail.Attachments With att .SaveAsFile «c:1» & .FileName 'ниже задокументирована строка коротая могла бы сработать, но не работает ' .Item.Move Application.Session.GetDefaultFolder(olFolderInbox).Parent.

Folders(«Черновики») End With Next Set oMail = Nothing End Sub Ответ: Похоже, что все равно необходимо выгружать в папку на диске. поэтому написал пока такой код.Есть другие предложения? Sub SaveAtt() Dim oMail As Outlook.MailItem, oMail_temp As Outlook.

MailItem Dim strTempFilePath As String Dim att As Attachment Dim k As Integer, res As Integer On Error GoTo ErrHandler 'выбираем текущее открытый элемент Set oMail = Outlook.Application.ActiveExplorer.Selection(1) 'проверяем, что в сообщении имеются вложения If oMail.Attachments.

Count = 0 Then MsgBox («В данном письме отсутствуют вложения!»): Exit Sub 'перебираем элементы вложений For Each att In oMail.Attachments 'проверяем, что вложение формата msg k = InStrRev(att.FileName, «.») If (Mid(att.FileName, k + 1, Len(att.

FileName) — k)) = «msg» Then 'если это наш вариант то работаем с ним 'запросим у пользователя нужно ли открывать письма после перемещения If res = 0 Then res = MsgBox(«Показать вложенные письма?», 4, «Открытие вложений») 'извлекаем его в папку Temp пользователя (C:UsersuserAppDataLocalTemp) strTempFilePath = Environ(«TEMP») & «» & att.

FileName 'сохраняем файл att.SaveAsFile strTempFilePath 'указываем этот элемент для работы с ним в качестве сообщения Set oMail_temp = Outlook.Application.CreateItemFromTemplate(strTempFilePath) 'перемещаем его в папку Черновики почты Outlook oMail_temp.Move Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Parent.

Folders(«Черновики») If res = 6 Then oMail_temp.Display Set oMail_temp = Nothing 'удаляем сообщения из папки Temp Kill strTempFilePath End If Next Set oMail = Nothing Exit Sub 'обработчик ошибок ErrHandler: Select Case Err.Number Case 440 MsgBox «Не выбрано почтовое сообщение!» Case Else MsgBox «Произошла ошибка » & Err.Number & vbNewLine & _ Err.Description, vbInformation End Select End Sub

Вопрос: Outlook. Пакетное Сохранение вложений писем в формате txt

В общем, суть в следующем. На почту приходят письма с вложениями. Вложения — тоже письма, но только в текстовом формате. Как настроить правило или создать макрос, чтобы, например, все полученные письма, которые получены от определенного пользователя и содержат вложения — сохраняло вложения в определенную папку в формате txt.

Заранее Спасибо!

Ответ: По вышеописанному макросу:1. Настроил на почте яндекса папку ОБРАБОТКА, чтобы получать в нее все файлы с вложенными файлами содержащими «.xls»/ В итоге туда сыплются все письма, где есть Экселевские файлы. 2. Разрешил в настройках яндекс-почты забирать письма через POP3 только с папки ОБРАБОТКА3. Настроил в Outlook правило, чтобы по факту прихода письма с вложением и с такого-то адреса (моего) — чтобы запускался сценарий. Смотри вышеприведенный макрос. Сценарий — распаковывает все файлы в одну папку и нумерует их настолько уникальным номером, что и не подкопаешься….На просторах инета бытует версия что могут подобные макросы пропускать обработку части писем при работе по POP3 и больших объемах одновременно скачиваемых Аутлуком писем… Типа при 16 письмах уже будут проблемы…Откровенно говоря 15 писем я проверил только что… Полет нормальный

Данный макрос я привязал к правилу

Вопрос: Email рассылки свой скрипт или MailChimp?

Предложили заняться большим проектом. Для социальной сети нужно реализовать возможность отправления 50,000 email писем сутки. Первое что пришло в голову написать php скрипт который будит отправлять их через cron, где-то по 35 писем в минуту.

Но сегодня услышал о MailChimp — чем он собственно лучше своего php скрипта который отправляет письма через php mail()?

Ответ:

Сообщение от Dima84

чем он собственно лучше своего php скрипта который отправляет письма через php mail()?

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

Грубо говоря отправлять 100 писем в сутки не очень сложно, но когда их число увеличивается сразу появится большое число проблем, которые придется решать.

Помимо MailChimp есть еще множество почтовых сервисов, имеет смысл рассмотреть несколько и выбрать 1 из них.

Вопрос: Скрипт на сканирование файлов и папок

Здравствуйте. Нашел шаблон с php скриптом который считывает в корне сайта папку files. Сайт лежит у меня по пути /var/www/web/, т.е скрипт считывает только папку /var/www/web/files Как переписать в скрипте путь чтобы он мог сканировать файлы с папки /Z/FTP/ Вот сам скрипт и откуда я взял шаблон если кому иитересно

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

Источник: http://forundex.ru/yap/Skript-vitaskivaniya-vlozhenij-iz-pisem-i-sohranenie-v-papku-732005

Ссылка на основную публикацию