Jump to content
Local
Queeq

Напоминание на почту

Recommended Posts

Делал ли кто-то у себя подобные напоминания на почту?

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

Не хочется изобретать велосипед.

Share this post


Link to post
Share on other sites

more OnChange

#!/bin/bash

#

export LC_ALL=ru_RU.UTF-8

 

LOGIN=$1

param=$2

oldValue=$3

newValue=$4

 

#Служба сообщений

 

MSG=""

 

fi

 

tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=")

credit=$(grep -i "^credit=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=")

email=$(grep -i "^email=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=")

fee=$(grep -i "^Fee=" /var/stargazer/tariffs/$tariff.tf | cut -f 2 -d"=")

 

# Изменение тарифа

if [ "$param" == "tariff" ]; then

MSG="$MSG Ваш тариф изменен с '$oldValue' на '$newValue', стоимостью`expr substr " $fee" 1 index "$fee" .` руб. за месяц.\n"

fi

 

# Изменение баланса

if [ "$param" == "cash" ]; then

# Пополнили счет

if [ "${oldValue%.*}" -lt "${newValue%.*}" ] ; then

MSG="$MSG Ваш баланс увеличен на: `expr ${newValue%.*} - ${oldValue%.*}` руб., и теперь составляет ${newValue%.*} руб.\n"

fi

 

# На балансе менее 50руб.

if [ "${newValue%.*}" -lt 50 ] ; then

MSG="$MSG Обратите внимание на вашем балансе осталось ${newValue%.*} руб.!\n"

fi

fi

 

#Изменение кредита

if [ "$param" == "credit" ]; then

MSG="$MSG Ваш кредитный лимит изменен с ${oldValue%.*} руб. до ${newValue%.*} руб.\n"

fi

 

if [ "$MSG" != "" ] ; then

MSG="$LOGIN, здравствуйте!\n\n$MSG\n C уважением, Администратор сети."

sgconf set -s localhost -p 5555 -a * -w "*" -u $LOGIN -m "`echo -e $MSG`"

#Сообщение на мыло

if [ $email != "" ] ; then

MAIL="To: $email\r\nContent-Type: text/plain; charset=UTF-8; format=flowed\r\nSubject: Billing system \r\nMime-Version: 1.0\r\n\n "

echo -e $MAIL$MSG | ssmtp $email &

fi

fi

 

exit 0

Share this post


Link to post
Share on other sites

Не совсем то, но всё равно спасибо :D

Share this post


Link to post
Share on other sites
Не совсем то, но всё равно спасибо :D

почему бы не взять отсюда кусок кода ,сделать свой скрипт и выполнять по крону? :D

Share this post


Link to post
Share on other sites

почему бы не взять отсюда кусок кода ,сделать свой скрипт и выполнять по крону? :D

 

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

Вот и спрашиваю, чтобы не изобретать.

Share this post


Link to post
Share on other sites

почему бы не взять отсюда кусок кода ,сделать свой скрипт и выполнять по крону? :D

 

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

Вот и спрашиваю, чтобы не изобретать.

 

 

так вот это по-моему как раз что вам нужно

 

# Изменение тарифа
if [ "$param" == "tariff" ]; then
MSG="$MSG Ваш тариф изменен с '$oldValue' на '$newValue', стоимостью`expr substr " $fee" 1 index "$fee" .` руб. за месяц.\n"
fi

# Изменение баланса
if [ "$param" == "cash" ]; then
# Пополнили счет
if [ "${oldValue%.*}" -lt "${newValue%.*}" ] ; then
MSG="$MSG Ваш баланс увеличен на: `expr ${newValue%.*} - ${oldValue%.*}` руб., и теперь составляет ${newValue%.*} руб.\n"
fi

# На балансе менее 50руб.
if [ "${newValue%.*}" -lt 50 ] ; then
MSG="$MSG Обратите внимание на вашем балансе осталось ${newValue%.*} руб.!\n"
fi

 

 

думаю тоже такое сделать...

Share this post


Link to post
Share on other sites

это если базы в файле а как если базы в мускуле?

Я бы тоже прикрутил такую фитчу себе на сервак

Но и желательно что бы и на мыло кидал и в программу авторизатор что бы видно было юзверю что система автоматом пишет

Буду признателен за решение вопроса.

Share this post


Link to post
Share on other sites

Ну некрофил))

С помощью php,perl,c... etc.

 

например то же , но на пхп

<?php
#!/usr/local/bin/php
putenv('LANG=ru_RU.UTF-8');
$login = $argv[1];
$param = $argv[2];
$oldValue = $argv[3];
$newValue = $argv[4];

$MSG = "";
$query = mysql_query('select t.`Fee` as `Fee`, t.`name` as `TariffName`,u.`Email` as `Email`, u.`Credit` as `Credit` from `users` as u LEFT JOIN `tariffs` as t ON t.`name` = u.`Tariff` where u.`Login`="' . $login . '"');
$result = mysql_fetch_assoc($query);
if ($param == 'tariff') {
$MSG = "$MSG Ваш тариф изменен с '$oldValue' на '$newValue', стоимостью  '".$result['Fee']."' руб. за месяц.\n";
}
if ($param == 'cash') {
if ($oldValue < $newValue) {
	$MSG = "$MSG Ваш баланс увеличен на: ".($newValue - $oldValue)." руб., и теперь составляет $newValue руб.\n";
}
if ($newValue < 50) {
	$MSG = "$MSG Обратите внимание на вашем балансе осталось $newValue руб.!\n";
}
}
if ($param == 'credit') {
$MSG = "$MSG Ваш кредитный лимит изменен с $oldValue руб. до $newValue руб.\n";
}
if ($param == 'credit') {
if ($MSG != "") {
	$MSG = "$LOGIN, здравствуйте!\n\n$MSG\n C уважением, Администратор сети.";
	exec('sgconf set -s localhost -p 5555 -a admin -w 123456 -u ' . $LOGIN . ' -m "' . $MSG . '"');
	if ($result['Email'] != "") {
		mail($result['Email'], 'Billing system', $MSG);
	}
}
}
?>

Share this post


Link to post
Share on other sites

Ну некрофил))

С помощью php,perl,c... etc.

 

например то же , но на пхп

<?php
#!/usr/local/bin/php
putenv('LANG=ru_RU.UTF-8');

 

Спасибо

Мне несовсем понятно как енто дело запустить?

или просто торможу с утра :)

Share this post


Link to post
Share on other sites

Ну вариантов много.

 

При #!/usr/local/bin/php , скрипт запускается как обычный шеловский без php -f.

Можно поместить в онконект, можно внутри онконекта его вызывать, etc

Share this post


Link to post
Share on other sites

Ну вариантов много.

 

При #!/usr/local/bin/php , скрипт запускается как обычный шеловский без php -f.

Можно поместить в онконект, можно внутри онконекта его вызывать, etc

А можно на примере :-)

ну скажем я создал в корне конфигов файл member поместил в него этот код

может его лучше вызывать со скрипта OnChange ?

Только не вкурю как

я такого ещё не делал

извините за тормаза :-)

Share this post


Link to post
Share on other sites

Ну это тупо переделка скрипта выше, тот что 2009г )). Он OnChange. Соотвественно положите в OnChange

Share this post


Link to post
Share on other sites

Ну это тупо переделка скрипта выше, тот что 2009г )). Он OnChange. Соотвественно положите в OnChange

я попробую

Просто на будущее научите делать вызов как правильно?

просто на примере :-)

Спасибо

Share this post


Link to post
Share on other sites

его же можно засунуть и в OnChange и в OnConnect

что бы грязь не разводить а держать в одном файле гле его легко и удобно найти и редактировать

Share this post


Link to post
Share on other sites

Ну это тупо переделка скрипта выше, тот что 2009г )). Он OnChange. Соотвественно положите в OnChange

я попробую

Просто на будущее научите делать вызов как правильно?

просто на примере :-)

Спасибо

Просто скопируйте скрипт в OnChange, он будет исполнятся как пхп

Share this post


Link to post
Share on other sites

ну и конечно не забудьте mysql_connect, select_db etc

Share this post


Link to post
Share on other sites

Засунул проверил

Ничего не отправляется :-(

На почте пусто

и в программу авторизатор тоже ничего не приходит :-(

Share this post


Link to post
Share on other sites

покажите скрипт, mail вобще работает на сервере? sgconf вручную отправляет?

Share this post


Link to post
Share on other sites

покажите скрипт, mail вобще работает на сервере? sgconf вручную отправляет?

Если отправляешь с программы конфигуратора то сообщение приходит

почта на серваке работает

вот насчёт пхп не уверен что отправляет

локальные сайты отправляют почту функцией smtp с авторизацией по логину и паролю

даже незнаю как проверить я недавно начал использовать стг

так что не все азы изучил

Share this post


Link to post
Share on other sites

Вот что выдаёт:

 

PHP Notice: Undefined offset: 1 in /etc/stargazer/messages on line 4

PHP Notice: Undefined offset: 2 in /etc/stargazer/messages on line 5

PHP Notice: Undefined offset: 3 in /etc/stargazer/messages on line 6

PHP Notice: Undefined offset: 4 in /etc/stargazer/messages on line 7

PHP Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /etc/stargazer/messages on line 10

PHP Warning: mysql_query(): A link to the server could not be established in /etc/stargazer/messages on line 10

PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /etc/stargazer/messages on line 11

Share this post


Link to post
Share on other sites

Написано же понятным по белому

 

Access denied for user 'root'@'localhost' (using password: NO)

 

mysql_connect() со своими учетными данными кто делать будет?

Share this post


Link to post
Share on other sites

Написано же понятным по белому

 

Access denied for user 'root'@'localhost' (using password: NO)

 

mysql_connect() со своими учетными данными кто делать будет?

 

вот спасибо :-)

если б я ещё знал пхп и как это всё делается :-)

даже незнаю как вызвать скрипт с OnConnect

Не будете ли так любезны разжевать ламаку что куда и как

Пожалста :-)

Share this post


Link to post
Share on other sites

OnConnect вызывает стг, а не Вы.

Добавьте после #!/usr/local/bin/php.

mysql_connect('HOST','USER','PASSWORD');

mysql_select_db('DATABASE');

 

HOST, USER, PASSWORD, DATABASE - Ваши параметры

 

Какая ось? Т.к. пути разные в разных осях

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×