Как автоматически создавать и отправлять электронную почту

Оглавление:

Как автоматически создавать и отправлять электронную почту
Как автоматически создавать и отправлять электронную почту

Видео: Как автоматически создавать и отправлять электронную почту

Видео: Как автоматически создавать и отправлять электронную почту
Видео: Леонид Агутин и «Отпетые мошенники» – Граница [Официальное видео] - YouTube 2024, Апрель
Anonim
Важно ежедневно проверять различные данные журнала и статистику на вашем сервере, но это становится утомительным. Было бы неплохо получить одно письмо со всеми основными моментами каждый день, так что вам даже не нужно заходить на сервер, чтобы проверить проблемы? В этом руководстве будет показано, как настроить автоматическую электронную почту в Linux и Windows.
Важно ежедневно проверять различные данные журнала и статистику на вашем сервере, но это становится утомительным. Было бы неплохо получить одно письмо со всеми основными моментами каждый день, так что вам даже не нужно заходить на сервер, чтобы проверить проблемы? В этом руководстве будет показано, как настроить автоматическую электронную почту в Linux и Windows.

Мы специально рассмотрим это для Ubuntu и Windows 8.1, причем Gmail используется как почтовый сервер, с которого отправляется почта. Если у вас есть другая версия Linux или Windows или предпочитаете использовать другую службу электронной почты, инструкции здесь должны быть легко адаптированы.

Автоматизированные электронные письма в Linux

Мы собираемся использовать два разных пакета для этого, ssmtp и mailutils, поэтому установите их оба с помощью следующей команды:

$ sudo apt-get install ssmtp mailutils

После их установки нам необходимо внести некоторые изменения в файл конфигурации SSMTP:

$ sudo vi /etc/ssmtp/ssmtp.conf

Отредактируйте файл с этими изменениями (безопасно просто удалить весь текст в файле и скопировать / вставить эти настройки, если хотите):

# This address will receive the emails, so enter your own email here if you want to receive them.

[email protected]

# Specify the email server here (leave as is if you’re using Gmail).

mailhub=smtp.gmail.com:587

# The domain name that the mail will come from.

rewriteDomain=gmail.com

# The email address that these emails should be from.

[email protected]

# SSL/TLS settings, required for Gmail and most other mail servers.

UseTLS=Yes

UseSTARTTLS=Yes

# The username and password to your Gmail account.

AuthUser=username

AuthPass=password

# Allow the ability to specify a from address different than the one above.

FromLineOverride=yes

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

$ sudo chmod 640 /etc/ssmtp/ssmtp.conf

$ sudo chown username.username /etc/ssmtp/ssmtp.conf

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

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

Чтобы убедиться, что все настроено правильно, давайте попробуем тестовое письмо:

$ echo 'Testing' | mail -s 'Testing mail setup' [email protected]

«Тестирование» будет в теле письма, и тема будет «Проверка настройки почты». Проверьте свой адрес электронной почты, чтобы убедиться, что вы его получили.

Написание сценария для писем

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

#!/bin/bash

# Check hard drive space

echo 'Hard drive space:' > /home/geek/email.txt

df -h >> /home/geek/email.txt

# List the users that are logged in

echo 'Users currently logged in:' >> /home/geek/email.txt

who >> /home/geek/email.txt

# List currently running processes

echo 'Running processes:' >> /home/geek/email.txt

ps -e >> /home/geek/email.txt

# Send the email

cat /home/geek/email.txt | mail -s 'Daily server information' [email protected]

# Delete the file we created

rm /home/geek/email.txt

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

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

$ crontab -e

Для электронной почты 2:00, добавьте:

0 2 * * * /home/geek/script.sh

Мы написали целую статью о файлах crontab, если вам нужна дополнительная помощь с этой частью.

Автоматизированные электронные письма в Windows

Отправка электронной почты в командной строке возможна через PowerShell, но мы обнаружили, что реализовать эту функцию намного проще с сторонними приложениями, особенно при использовании Gmail. SendEmail - это бесплатная программа для Windows, которая упрощает интеграцию с Планировщиком задач Windows и Gmail. Нажмите ссылку выше, чтобы загрузить последнюю копию, и убедитесь, что вы используете TLS-версию.

После того, как вы загрузили SendEmail, извлеките zip-файл и поместите содержимое где-нибудь, где вы можете хранить их, пока вы планируете отправлять автоматические электронные письма. В этом примере мы просто собираемся сохранить программу в C: SendEmail

Давайте проверим SendEmail, чтобы быстро понять, как это работает. Откройте командную строку, введя cmd в меню «Пуск» или «Выполнить» (Ctrl + R).

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

cd C:SendEmail

Теперь мы можем попробовать отправить тестовое письмо с помощью следующей команды:

sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Test email subject' -m 'This is a test email.'

Очевидно, замените «имя пользователя» и «пароль» учетными данными вашей учетной записи перед выполнением команды.

Вот что делает команда выше:

sendEmail

выполняет программу.

-f

- с адреса

-t

- адресовать

-s

- Сервер SMTP

-xu

- имя пользователя учетной записи

-xp

- пароль от аккаунта

-u

- Тема письма

-m

- текст электронного письма

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

Написание сценария для писем

Чтобы получить максимальную отдачу от нашего скрипта, мы собираемся написать его для PowerShell. Откройте Windows PowerShell ISE, введя файл powershell_ise.exe в приглашение Run (Ctrl + R).

С правой стороны окна PowerShell ISE вы можете перечислить каждую команду, которую PowerShell сможет выполнить. Это должно дать вам хорошее начало при создании типов информации, о которой вам нужно сообщать. В вашем сценарии вы также можете вызвать сторонние программы для вывода информации (т. Е. SendEmail является сторонним приложением, но PowerShell и cmd могут использовать его для выполнения задач, которые они обычно не могут).
С правой стороны окна PowerShell ISE вы можете перечислить каждую команду, которую PowerShell сможет выполнить. Это должно дать вам хорошее начало при создании типов информации, о которой вам нужно сообщать. В вашем сценарии вы также можете вызвать сторонние программы для вывода информации (т. Е. SendEmail является сторонним приложением, но PowerShell и cmd могут использовать его для выполнения задач, которые они обычно не могут).
Для нашего примера скрипта мы проверим текущее использование диска на диске C, покажем текущие процессы и покажем все файлы, которые в настоящее время разделяются по сети.
Для нашего примера скрипта мы проверим текущее использование диска на диске C, покажем текущие процессы и покажем все файлы, которые в настоящее время разделяются по сети.

# Check hard drive space

echo 'C: Drive Usage:' > C:SendEmailinfo.txt

Get-WmiObject win32_LogicalDisk -Filter 'DeviceID='C:'' | Select-Object Size,FreeSpace >> C:SendEmailinfo.txt

# List currently running processes

echo 'Running processes:' >> C:SendEmailinfo.txt

get-process >> C:SendEmailinfo.txt

# List the files/folders currently being shared

echo 'SMB shares:' >> C:SendEmailinfo.txt

get-smbshare >> C:SendEmailinfo.txt

# Send the email

type C:SendEmailinfo.txt | C:SendEmailsendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Daily server info'

# Delete the file we made

rm C:SendEmailinfo.txt

В этом скрипте вся информация выводится на C: SendEmail info.txt, а затем текст в этом документе отправляется нам по электронной почте до его удаления. Сохраните сценарий с расширением файла ps1 (файл PowerShell).

Закончив свой скрипт, запустите быстрый тест из приглашения «Выполнить», чтобы убедиться, что он работает правильно.

Просто используйте

powershell

с помощью

-file

аргумент и укажите путь к вашему скрипту.

powershell -file 'c:SendEmaildaily-email.ps1'

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

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

В открывшемся планировщике задач выберите «Действие»> «Создать основную задачу».
В открывшемся планировщике задач выберите «Действие»> «Создать основную задачу».
Назовите эту задачу, например, «Daily email script» и нажмите «Далее». На следующем экране выберите частоту, с которой вы хотите запустить скрипт электронной почты, возможно, ежедневно. Затем выберите время, когда вы хотите запустить скрипт, и нажмите «Далее».
Назовите эту задачу, например, «Daily email script» и нажмите «Далее». На следующем экране выберите частоту, с которой вы хотите запустить скрипт электронной почты, возможно, ежедневно. Затем выберите время, когда вы хотите запустить скрипт, и нажмите «Далее».

Теперь вы должны быть в разделе «Действие» мастера, выберите «Запустить программу» и введите тот же текст, который мы ввели в приглашение «Запуск» ранее, чтобы протестировать наш скрипт.

Рекомендуемые: