Страница 1 из 1

Отправка оповещений на EMAIL

СообщениеДобавлено: Чт июл 26, 2018 10:45 am
SergeyUAL
Здравствуйте.

Можно сделать автоматическую отправку оповещений на почтовый ящик пользователя(если указан), независимо в сети пользователь или нет?

С уважением, Сергей.

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Чт июл 26, 2018 11:29 am
Алексей Пикуров
Здравствуйте, Сергей.

Да, можно конечно, скриптом на сервере. Речь идёт именно об оповещениях или о приватных сообщениях?

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Чт июл 26, 2018 11:58 am
SergeyUAL
Именно об оповещениях.

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Чт июл 26, 2018 12:02 pm
Алексей Пикуров
Да, вам нужно событие OnBroadcastMessage, следует сделать его обработку в скрипте, проверить, если юзер офлайн, то отправить ему письмо по email.

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

Перевожу тему в раздел вопросов, этот функционал уже есть.

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Пн июл 30, 2018 10:30 am
SergeyUAL
Скрипт по отправке оповещений на EMAIL.
Вопрос. Как будет вести себя сервер, если придется отправить письмо десяткам пользователям, не будет ли это гуглом расцениваться как СПАМ?

Код: Выделить всё
// ---------------------------------------
// Script created by Сергей Иванов (UIN 2)
// 26.07.2018 16:13:20
// ---------------------------------------

const
  sHost     = 'smtp.gmail.com';
  sLogin    = '[email protected]';
  sPassword = 'password'; 
  iPort     = 587;
  bSSL      = true; //использовать защищённое SSL/TLS соединение или нет
 
function OnBroadcastMessage(iCID, iUIN: integer; var sUsersList: string; var dtActualTo: double; var bReadNotify: boolean; iMsgType: integer; sMsg: string): boolean;
var
  s, sEmailTo, sEmailFrom, sTextBody, sNameFrom, sNameTo: string;
  iUINTo: integer;
  dt: double;
begin
  result := true;
     
    // получаем список UIN-ов людей, которым адрессовалось оповещение
    s:= sUsersList

 
// и перебираем их всех по одному, если офлайн передаем оповещение на почту
          while length(s)>0 do begin
            iUINTo := strtoint(GetNextSt(s, ','));
           
            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, 5);
                  sNameTo   := mGetUserFullNameByPreset(iUINTo, 5);

                  sTextBody := 'Здравствуйте, ' + sNameTo + ', пока вас не было в чате вам пришло оповещение:<br /><br />' +
                               '<span style="color:green">' +
                               FormatDateTime('[dd.mm.yyyy hh:nn:ss]', Now) +
                               '</span>' +
                               ' '+
                               '<span style="color:blue"><b>' +
                               sNameFrom +
                               '</b></span>'+
                               ' &gt; '+
                               ReplaceString(mConvertMsgToPlainText(sMsg, iMsgType), CRLF, '<br />', true, false);

                  SendEmail(sHost, iPort, sLogin, sPassword, sEmailFrom, bSSL, sEmailTo,
                            'Оповещение для ' + sNameTo + ' от MyChat', sTextBody, 1, '');
               
                end;
            end;
          end;
end;

begin

end.

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Вт июл 31, 2018 11:30 am
Алексей Пикуров
Вопрос не ко мне, а к Гуглу, напишите им на саппорт и спросите. Если есть сомнения, используйте свой домен, а не бесплатную публичную почту, там вас никто не посчитает за спамера.

Re: Отправка оповещений на EMAIL

СообщениеДобавлено: Вт июл 31, 2018 11:32 am
Алексей Пикуров
P.S. Если рассылки эпизодические, возможно, всё будет ок. Но использовать gmail для такой задачи — решение опрометчивое, вы никому ничего не докажете и не будете в курсе, если вас накажут.

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