Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Заблокирован

Рассылка сообщений с ссылкой активации регистрации

13.08.2026, 22:38. Показов 1760. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запускать почтовый сервер не охота, черз регистратора домена - буду пробовать. А так встроенного ничего нет? Проект тутhttps://github.com/Andrei-Y/FP... er_Console (кнопки не смотрите у зареганого пользователя - это ещё не всё, там с рангом добавятся кнопки модератора и админа, по ходу работы стало понятно, что это будет по комьюнити, деваться некуда, не прошедшие модерацию сообщения будут видеть только зарегестрированные пользователи) Там в общем среда получается, а не форум. Да, чем методом тыка подбирать способ рассылки - лучше задать вопрос и работать дальше над функционалом. Если варианты есть - то как можно попроще, почтовый сервер мне нафиг не нужен.

Добавлено через 15 минут
Так-то считаю что правильно сделал, что не стал для HTML кода делать таблицу в БД, и вынес его в локальные функции роутера lpr...думаю, что все эти скины...пока не так уж и нужны...ну короче пока архитектура вот вот как-то складывается...
А вообще я конечно поражён мощностью HTML, по книгам у думал что это такой себе костыль - ерунда, а с ассистентом я понял, что в принципе смогу реализовать всё что угодно (что в голову взбредёт) на HTML, разумеется в связке с FPC Lazarus. С асситентом мы уже давным-давно обсудили создание шлюза для разных AI ассистентов с разных порталов, для работы над проектами базирующимися на моём сервере. Но это так, я сам не очень в это верю..., но чем больше работаю над проектом - тем больше начинаю верить что и это можно.

Добавлено через 1 час 43 минуты
Вот такое есть https://wiki.lazarus.freepascal.org/lNet , пробовал кто-нибудь?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2026, 22:38
Ответы с готовыми решениями:

Рассылка сетевых сообщений
Здравствуйте! Кратко обрисую задачу: есть локальная сеть около 100 ПК, все работают под Windows...

Рассылка сообщений внутри приложения МультиОС
Добрый день, подскажите плииз, может кто сталкивался? задача: формы определенного типа...

Как программно закрыть окно мастера активации MS Офиса с сообщением "эта копия не активирована"?
уважаемые коллеги, как программно - всего лишь закрыть окно (форму) мастера активации MS Офиса с...

32
Заблокирован
06.09.2026, 21:02  [ТС]
Студворк — интернет-сервис помощи студентам
В общем это не Docker , это сделано через curl и работает. Я не понимаю зачем использовать что-то большее для банальной рассылки о регистрации. Использовал сторонний сервис почтовых рассылок - своевременная техподдержка. И бесплатно.
Весь код автоматической рассылки, почтовый сервис не для рекламы

Pascal
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  function SendActivationCode(const AEmail, AUsername, ACode: string): Boolean;// работает с [url]https://smtp.bz/[/url]
//  Простой пример отправки письма с сервиса почтывых рассылок CURL (API)
//curl --location 'https://api.smtp.bz/v1/smtp/send' \
//--header 'Authorization: API-KEY' \
//--header 'Content-Type: application/json' \
//--data-raw '{
//        "name": "My Name",
//        "from": "info@mycompany.com",
//        "to": "postmasterbz@mail.ru",
//        "subject": "My letter subject",
//        "html": "<html><head></head><body><p>My text</p></body></html>"
//    }'
var
  CProcess: TProcess;
  MailHTML, JSONData: string;
begin
  Result := False;
  CProcess := TProcess.Create(nil);
  try
    WriteLn(' [JSON API ШЛЮЗ] Сборка защищённого пакета для: ', AEmail);
 
    // 1. Формируем чистый HTML-текст письма. Внутри стилей — ТОЛЬКО одинарные кавычки! [INDEX]
    MailHTML := '<html><body style=''font-family:monospace; background:#0f1115; color:#00ffcc; padding:20px;''>' +
                '<div style=''border:1px solid #00ffcc; padding:20px; display:inline-block;''>' +
                '<h2>Приветствуем в сообществе портала cross-section.ru ' + UpperCase(AUsername) + '!</h2>' +
                '<p>Ваш профиль успешно зарезервирован в ангаре системы.</p>' +
                '<p>Для завершения регистрации перейдите по ссылке ниже:</p>' +
                '<p><a href=''http://localhost:8080/activate?token=' + ACode + ''' style=''color:#0066cc; font-weight:bold; text-decoration:none;''>[ АКТИВИРОВАТЬ ПРОФИЛЬ ]</a></p>' +
                '</div></body></html>';
 
    // 2.  СБОРКА  ПО ОФИЦИАЛЬНОМУ ПРИМЕРУ CURL (Плоский JSON, ключ "html") [INDEX]
    JSONData := '{' +
                '"name": "Регистрация", ' +
                '"from": "no-reply@cross-section.ru", ' + // Вставьте свой домен вместо cross-section.ru
                '"to": "' + AEmail + '", ' +
                '"subject": "Activation link", ' +
                '"html": "' + MailHTML + '"' + // Ключ "html" строго по твоему примеру! [INDEX]
                '}';
 
 
 
 
    // 3. Задаём исполняемый файл системы
    CProcess.Executable := '/usr/bin/curl';
 
    // 4. Параметры запуска (Каждый флаг и значение — отдельной строкой!)
    CProcess.Parameters.Add('-s'); 
    CProcess.Parameters.Add('--location');
    CProcess.Parameters.Add('-X');
    CProcess.Parameters.Add('POST');
    CProcess.Parameters.Add('https://api.smtp.bz/v1/smtp/send');
 
    // Первая пара заголовка: Авторизация
    CProcess.Parameters.Add('--header');
    CProcess.Parameters.Add('Authorization: '); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Впиши свой API-ключ, который в профиле на [url]https://smtp.bz/panel/user[/url]
 
    // Вторая пара заголовка: Тип контента (JSON)
    CProcess.Parameters.Add('--header');
    CProcess.Parameters.Add('Content-Type: application/json');
 
    // Передача сырых данных
    CProcess.Parameters.Add('--data-raw');
    CProcess.Parameters.Add(JSONData);
 
    // 5. Флаги скрытого выполнения
    // СТАЛО (Зрячий режим):
        //  1. ДОБАВЛЯЕМ ПАРАМЕТР ЗАПИСИ ОТВЕТА В ФАЙЛ:
    // Флаг -o заставляет curl принудительно запечь ответ шлюза на диск!
    CProcess.Parameters.Add('-o');
    CProcess.Parameters.Add('smtp_log.txt');
 
    //  2. СБРАСЫВАЕМ ВСЕ ПАЙПЫ И СКРЫТИЯ (Чистый стандартный запуск):
    CProcess.Options := [poWaitOnExit];
 
 
    // 6. Выстрел процесса в ОЗУ Linux!
    CProcess.Execute;
 
    // Проверяем статус завершения утилиты curl
    if CProcess.ExitStatus = 0 then
    begin
      Result := True;
      WriteLn('    -> JSON-пакет успешно передан утилите curl и выстрелен в сеть!');
    end
    else
      WriteLn('     [СБОЙ JSON API] Ошибка вызова curl. Код возврата ОС: ', CProcess.ExitStatus);
 
  finally
    CProcess.Free;
  end;
end;
Добавлено через 24 минуты
Я так и не понял, что у тебя там за сервер и почему он на паскале пишется)
потому что сейчас исполняемый файл сервера, пока с линейной, но бесшовной, пагинацией извлекаемой древовидной структуры (сейчас будет делаться пагинация по глубине) любой глубины - весит всего 4мб и работает на sqlite3, и когда это будет мощнейший функционал для работы коммунити над кодом и изучением смысловых деревьев - он едва достигнет 10 мб, ну пусть даже 20 мб, или даже 50, но если 50 - там будет то, что разрабам PHPBB даже и не снилось в помине, ну и остальным вроде как тоже.
0
Эксперт .NET
 Аватар для Usaga
14768 / 9542 / 1365
Регистрация: 21.01.2016
Сообщений: 35,984
07.09.2026, 05:55
Цитата Сообщение от Hrethgir Посмотреть сообщение
весит всего 4мб
Это имеет какое-то значение в 2026м году?
0
Заблокирован
07.09.2026, 09:12  [ТС]
Это имеет какое-то значение в 2026м году?
Прошу прощения, и спешу уведомить, что это вообще не имеет никакого значения. Значение имеет эта характеристика только в сопоставимости с критерием функциональности. Ну на этот счёт можно пока положить то, что алгоритм обхода древовидных структур обрабатывает вложения любой глубины со скоростью одинаковой с линейным извлечением данных. Будем рассматривать алгоритм по числу операций, или это теперь не имеет никакого значения? Всё таки 2026 год

Добавлено через 1 минуту
Автоматическую отправку почты я не стал ложить на счёт, потому что это заслуга разработчиков ОС и почтовой программы, плюс сервиса отправки почты. А алгоритм мой, без ИИ.

Добавлено через 18 минут
одинаковой с линейным
и вот тут мне не совсем понятно как написать можно было бы более правильно: одинаковой с (как у) линейного извлечения. Впредь постараюсь излагать более точно.

Добавлено через 1 час 45 минут
Надо было правильно писать "с одинаковой скоростью, как у алгоритма линейного извлечения данных". Ну, не везде можно встретить тексты, несущие смысловую нагрузку, чтобы поучиться, это теперь крайняя редкость.

Добавлено через 1 минуту
Ведь так мало, оказывается, для общества остаётся из того, что вообще имеет какое либо значение, кроме нумерации годов.
0
Эксперт .NET
 Аватар для Usaga
14768 / 9542 / 1365
Регистрация: 21.01.2016
Сообщений: 35,984
07.09.2026, 10:27
Т.е. ты свой форумный движок пилишь?
0
Заблокирован
07.09.2026, 11:30  [ТС]
Т.е. ты свой форумный движок пилишь?
у меня есть подозрения, что свой форумный движок я уже давно-бы запилил, но у меня так-же ведётся учёт ботов не прошедших капчу - все их промахи фиксируются в отдельной таблице для дальнейшего их слива кому надо (учитывается количество попыток угадывание и сведения о машине) . Это уже я затестил. Но это далеко не всё, планы идут гораздо дальше и я заранее максимально возможно предусматриваю необходимые шаги для его работы: от самых глубоких дискуссий с механикой далёкой от обычных форумных движков, до интеграции своей нодовой системы семантических структур и свободного разворота любой дискуссии в отдельный проект. Тут всё очень сложно - механика обычных форумных движков слишком примитивна. А тут на удачу проект Lazarus предоставляет невероятно мощные инструменты для подобного проекта любых масштабов. В случае чего - можно перенести на другое IDE и язык программирования, но мне пока хватает и этого.

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

Добавлено через 7 минут
Сначала я так и думал, что это будет форум, просто форум, но когда я реализовал алгоритм обхода дерева, то увидел сколько он даёт бонусов, как UX, так фронтенд так и бэкенд, и тогда стало понятно, что это точно будет не просто форумный движок. Слишком много бонусов даёт алгоритм, чтобы реализовать это только для банального форума.

Добавлено через 2 минуты
Поправка - учёт спам машин не для слива кому надо, реализован, а для слива кому пригодится данная инфа.
0
Эксперт .NET
 Аватар для Usaga
14768 / 9542 / 1365
Регистрация: 21.01.2016
Сообщений: 35,984
07.09.2026, 11:34
Hrethgir, есть примерные оценки, когда эту вундер-фафлю можно будет увидеть вживую? Или задумка слишком крутая, чтобы релиз произошёл при жизни автора?
0
Заблокирован
07.09.2026, 12:23  [ТС]
Hrethgir, есть примерные оценки, когда эту вундер-фафлю можно будет увидеть вживую? Или задумка слишком крутая, чтобы релиз произошёл при жизни автора?
а ты можешь уже в локалке запускать и смотреть https://github.com/Andrei-Y/FP... er_Console . Чтобы создавать структуры любой глубины можешь зарегаться через sqllite3, и использовать сервер http://localhost:8080/ . Если войдёшь как гость - пагинации не будет, будет извлекаться всё дерево. Структуры можешь задавать как через браузер, так и sqlite3 .Помимо любой глубины вложения - черточки(префиксы) являются ссылками, ведущими на родительский узел. Это пока единственный UX бонус, но если учитывать глубину абстрактного размера - то очень удобный.

Добавлено через 2 минуты
Что касается остального функционала : после пагинации по глубине будет реализован частично, а после инверсии обхода - в большей мере.
0
Эксперт .NET
 Аватар для Usaga
14768 / 9542 / 1365
Регистрация: 21.01.2016
Сообщений: 35,984
07.09.2026, 12:25
Цитата Сообщение от Hrethgir Посмотреть сообщение
sqllite3
Т.е. твоя система не рассчитана на более чем несколько пользователей?
0
Заблокирован
07.09.2026, 12:32  [ТС]
Т.е. твоя система не рассчитана на более чем несколько пользователей?
неправильный вывод, ты ведь не захочешь настраивать почтовую рассылку чтобы банально зарегаться на своём локальном сервере... вот я тебе и сказал что регаться для "посмотреть" лучше через sqlite3, а так всё работает, просто чтобы посмотретьв всё - тебе надо будет заделигировать домен, настроить его, настроить сервис почтовых рассылок, в общем - слишком много для "посмотреть", поэтому я предложил тебе простой вариант. А так всё работает и проверено, включая то, чего я не предлагаю тебе делать.

Добавлено через 1 минуту
Просто я ещё на кручу сервер, запущу недели через 3, не раньше наверное.

Добавлено через 41 секунду
Не кручу сервер пока, откуда это "на кручу" - не знаю.
0
Эксперт .NET
 Аватар для Usaga
14768 / 9542 / 1365
Регистрация: 21.01.2016
Сообщений: 35,984
07.09.2026, 12:33
Hrethgir, я не понял при чём тут какие-то регистрации. Я о том, что SQLite не подходит для серверной нагрузки. Это хорошая СУБД, но для однопотокового применения.

Ты там какие-то "алгоритмы" выдумываешь, для ускорения и оптимизации. И такое используешь.
0
Заблокирован
07.09.2026, 13:03  [ТС]
Я не собираюсь строить кластерный облачный бизнес сервис.
А миф о том, что SQLite подходит только для «однопоточного применения в записной книжке», устарел примерно на 10-15 лет:
1) режим WAL (Write-Ahead Logging) — Полная многопоточность.
В современной SQLite3 есть встроенный режим WAL. Когда мы его включаем, база данных физически разделяет потоки чтения и записи. Тысячи пользователей могут одновременно ЧИТАТЬ дерево нод с диска, вообще не блокируя друг друга. Поток записи (когда кто-то отправляет аргумент) аккуратно встаёт в наносекундную очередь, записывается в отдельный быстрый лог, а Паскаль-воркер прижимает транзакцию через CommitRetaining без малейшего затыка.
2) Экономия тактов ОЗУ на транзите пакетов.
Классические СУБД (MySQL / PostgreSQL) работают как отдельные тяжелые сервера. Чтобы Паскаль просто спросил у MySQL: «Дай мне ноду №100», сервер должен запаковать этот запрос в сетевой TCP-пакет, отправить его по внутреннему сетевому шлюзу, MySQL должна его принять, расшифровать, найти строку, запаковать обратно в TCP-пакет и вернуть Паскалю. На этот транзит тратится колоссальное количество времени и памяти.
Это согласно сводке ИИ.
Кроме того (но я не сильно уверен, он утверждает, что у нас: SQLite3 скомпилирована уже прямо внутрь нашего 4-мегабайтного бинарника. Она работает в том же адресном пространстве ОЗУ. Паскаль читает данные напрямую из памяти, без сетевых прослоек. Скорость такой выборки достигает сотен тысяч запросов в секунду на самом простом процессоре. Объём данных:SQLite3 официально и без потери скорости пережёвывает файлы баз данных размером до 280 ТЕРАБАЙТ. Для текстового комьюнити увлечённых и энтузиастов, где нет тяжелого видео-мусора, этой базы хватит на 100 лет непрерывного, бурлящего общения. Кроме того - мы будем постоянно поджимать контент под базу знаний, а это значит что всё лишнее будет выбрасываться.

Добавлено через 3 минуты
Насчёт адресного пространства я с ним может и согласен, а вот насчёт того что она полностью в бинарнике - нет, частично - возможно, но не полностью.
0
Заблокирован
07.09.2026, 20:00  [ТС]
Прошу прощения, чтобы линейная пагинация была отключаемой надо сделать так
Pascal
1
if (FMaxNodes > 0) and (NodeCount >= FMaxNodes) then
в строках 488 и 504 текущего кода модуля Unit_Worker

Добавлено через 3 минуты
Да и вообще вот этот блок надо объединить
Pascal
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
      if NodeCount >= FMaxNodes then
          begin
            FSavedStack := StackToString(TailStack);
            FNextStartID := CurrentID;
            WriteLn('Запекаем >'+IntToStr(FNextStartID)+ 'стёк-'+FSavedStack+'NodeB='+IntToStr(CurrentID));
            Break; // Очищаем ОЗУ и мгновенно выходим
          end;
    end;
    {$ENDREGION} // КОНЕЦ ЦИКЛА ФОРМИРОВАНИЯ ПАКЕТА
 
    {$REGION'ПЕРЕДАЧА ПАКЕТА В ДОСТАВКУ'}
    case FMode of
emToViewer:
 
  begin
        //  1. ЕСЛИ ЦИКЛ ПРЕРВАН ПО ЛИМИТУ — СРАЗУ ГЕНЕРИРУЕМ КНОПКУ:
        if NodeCount >= FMaxNodes then
        begin
 
          // Вызываем  утилиту кнопки по условию!
                if (FNextStartID <> 0) and (CurrentID <> 0) then
        begin
 //        HTML_Acc.Append(RenderAjaxButton(FNextStartID, ButtonGateStack));
                      WriteLn('Запекаем в кнопку'+IntToStr(FNextStartID)+ 'стёк-'+FSavedStack+'NodeB='+IntToStr(CurrentID));
          HTML_Acc.Append(RenderAjaxButton(FNextStartID, FSavedStack));
         end;
 
        end;
Добавлено через 6 минут
Но вообще так кажется только когда не обращать внимание на case, а оно остаётся в текущей реализации, и значит надо просто изменить проверку условия в двух местах. Вот как-то так. Потому что этот же модуль будет давать задачу модулю "художнику", рисующему карту ветви.
0
Заблокирован
08.09.2026, 08:50  [ТС]
Да, ИИ силён в написании кода
Pascal
1
2
3
           if (CurrentID = FNextStartID) and (Length(TailStack) = 0) then begin
             FSavedStack := StackToString(TailStack);
            FNextStartID := CurrentID;
. Если CurrentID = FNextStartID уже равны, то зачем их уравнивать ещё FNextStartID := CurrentID;

Добавлено через 2 минуты
Ссылается на историческую архитектуру - забыли вычистить.

Добавлено через 27 минут
Хочется проанализировать все эти проверки условий, но максимум что я пока сделал в этом направлении - ввел этапы в комментариях, самой проверяемой на условия переменной вроде как является CurrentID , и те места, где она меняет своё значения я обозначил как этапы, и отметил в комментариях так // [T1] .Мыслей по этому поводу конечно много, но я не думаю, что их стоит подымать сейчас.

Добавлено через 7 минут
Вообще анализ проверок условий мог бы помочь в создании графической структуры работы с переменными, но, увы сейчас это похоже на фантастику - отрыываться от проекта и создавать аддон для Lazarus. А так - проверки условий и точки задания актуальным в них переменным значения - скелет кода, его логика, и иметь её визуализацию - ну это то ещё дело, вообще не последнее. Блок-схема вроде как...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2026, 08:50

Рассылка всем
Добрый день форумнчане! такая проблема в общем смотрите:...

Рассылка файлов по расшаренным ресурсам
Доброго времени суток! Недавно устроился на новую работу,возникла необходимость в написании...

Программа для рассылки
написал прогу для рассылки сообщений на icq номера которые записаные в мемо! но не знаю как сделать...

Возможность рассылки на форум
Доброго времени суток! Скажите есть ли такая возможность. Есть форум и нужно рассылать сообщения...

Массовая рассылка писем
Добрый день, Подскажите пожалуйста как отослать письма многим людям? У меня есть на форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru