Скрипт, который отправляет приватное сообщение пользователю на электронную почту, если получателя нет в сети (офлайн). Для того, чтобы скрипт смог отправить сообщение, у получателя и отправителя в профиле должен быть заполнен корректный адрес электронной почты.
Скрипт следует поставить на событие OnPrivateMessage на сервере чата:
Если юзера нет в сети, то в MyChat Client мы видим вот такое:
Если скрипт будет включен, но человек получит вот такое сообщение у себя на почте:
Отправка сообщений никак не сказывается на быстродействии сервера, так что можно пользоваться данной технологией без опаски.
Вместо констант sHost, sLogin, sPassword и sPort следует подставить параметры своего почтового сервера.
Исходный текст скрипта:
const
sHost = 'mail.yourserver.com';
sLogin = '[email protected]';
sPassword = 'secretpassword';
iPort = 26;
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
sEmailTo, sEmailFrom, sTextBody, sNameFrom, sNameTo: string;
begin
result := true;
if not mIsUINOnline(iUINTo) then begin
sEmailTo := mGetUserPrimaryEmail(iUINTo);
sEmailFrom := mGetUserPrimaryEmail(iUIN);
if (length(sEmailTo) > 0) and (length(sEmailFrom) > 0) then begin
sNameFrom := mGetUserFullNameByPreset(iUIN, 0);
sNameTo := mGetUserFullNameByPreset(iUINTo, 0);
sTextBody := '<span style="color:green">' +
FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now) +
'</span>' +
' '+
'<span style="color:blue"><b>' +
sNameFrom +
'</b></span>'+
'> '+
ReplaceString(mConvertMsgToPlainText(sMsg, iMsgType), CRLF, '</br>', true, false);
SendEmail(sHost, iPort, sLogin, sPassword, sEmailFrom, false, sEmailTo,
'Offline MyChat message for ' + sNameTo, sTextBody, 1, '');
end;
end;
end;
begin
end.
Справка по скриптовому движку MyChat: https://nsoft-s.com/mcserverhelp/index.html?scripts.htm
Комментарии приветствуются.
Чат со мной