Задать вопрос
  • Какими методами можно узнать доставлено ли email письмо?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Есть стандартные почтовые флаги о прочтении письма, которые поддерживаются многими почтовыми клиентами. Но это не гарантировано, так как автоматическое подтверждение реализовано не во всех клиентах, и обычно адресат должен явно нажать подтверждение, чтобы оно ушло назад.

    Вкладывание активных ссылок на внешние ресурсы обычно блочатся всеми адекватными почтовыми клиентами, поэтому всякие внешние картинки и т.д. - не есть гуд.

    Короче говоря, ни один метод не сможет дать 100% гарантии о прочтении письма, а в зависимости от настроек почтового сервера, даже нельзя дать 100% гарантии, что письмо попало в почтовый ящик.

    Реализовать подобное можно разве что внутри компании, где вы сможете настроить автоматизацию. Но опять таки, пользователь может просто выделить пачку писем и отметить их прочтенными, не прочитав на самом деле.
    Ответ написан
    Комментировать
  • Какими методами можно узнать доставлено ли email письмо?

    1. Основной метод контроля доставки - слежение за ошибками отправки (bounce). Ошибка чаще всего дается непосредственно в SMTP-сессию. В некоторых случаях сервер получателя принимает письмо, но в дальнейшем формирует сообщение о невозможности доставки (NDR).
    По стандартам, выдача сообщения о невозможности доставки в SMTP-сессию или отправка NDR являются обязательными, если ваше письмо прошло авторизацию (SPF и/или DKIM) - вы можете быть уверены, что получите баунс в SMTP-сессию или NDR если письмо не будет доставлено практически на 100%. Поэтому если на письмо в разумное время не получено отлупа, можно считать его доставленным. Сообщения о невозможности доставки идут на адрес отправителя SMTP-конверта (envelope-from). Чтобы точно знать, на какой адрес какое письмо не было доставлено, можно для каждого отправляемого письма формировать уникальный envelope-from.

    2. Есть расширение SMTP которое называется delivery status notification
    https://tools.ietf.org/html/rfc3461
    при отправке письма можно запросить, чтобы подтверждение доставки письма в ящик или на сервер получателя, не поддерживающего DSN пришло в явном виде. Подтверждения формирует MTA без участия пользователя. Поддерживается не всеми (например, postfix поддерживает, exim нет).

    3. Есть нестандартный заголовок Return-Receipt-To, который работает примерно так же как DSN. Но поскольку он нестандартный, его поддержка крайне ограничена.

    4. Есть стандартный (RFC 3798) заголовок Disposition-Notification-To упомянутый выше, это не уведомление о доставке, а уведомление о прочтении. Запрос на это уведомление как правило показывается пользователю и требует его подтверждения. Не надо использовать этот заголовок, если вы не хотите, чтобы вас прокляли.

    5. Пиксель в письме - не поможет проверить доставляемость, но в некоторых случаях позволить узнать что письмо было прочитано.

    6. (привет модератору). Таки есть службы типа postmaster.mail.ru и postmaster.yandex.ru, которые позволяют отслеживать доставляемость писем получателям данных сервисов, а это порядка 70-80% всех получателей. В данных службах можно смотреть статистику по доставляемости писем, попаданию в папку спам, действия с письмами (чтение, помечания спамом, удаления с прочтением/без прочтения). Причем можно задавать категории писем через специальный заголовок или селекторы DKIM и получать статистику раздельно по категориям писем. Это позволяет получить информацию даже по отдельному письму, задав ему отдельную категорию. Но делать так массово не стоит.
    Это основной источник данных по попаданию в спам / удалению без прочтений, etc.

    Немного не в тему, но может помочь:

    7. Можно (и нужно, если вы организуете массовые рассылки) завести ящики-ловушки на разных сервисах, добавлять их в рассылки и отслеживать доставляемость писем до этих ящиков, в частности попало ли письмо в inbox.

    8. Почти все крупные сервисы поддерживают FBL. Вы можете в реальном времени узнавать, если на вашу рассылку идут жалобы пользователей.
    Ответ написан
    2 комментария
  • Как починить Memcached?

    avsej
    @avsej
    Программист в Couchbase
    Нужно проверить какие порты слушает memcached:

    sudo netstat -tnlp | grep memcache

    Проверить, что в iptables ничего не блокируется. Проверить что localhost правильно резолвится.
    Ответ написан
    1 комментарий
  • Как ограничить количество подключений с одного ip в apache?

    fsdsdfsfdsfsdfsdfsdfsdfsd
    @fsdsdfsfdsfsdfsdfsdfsdfsd
    Unknown
    Можно через IPTables:

    5 подключений с одного IP:

    -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT --reject-with tcp-reset

    И сохраняем:

    service iptables save
    Ответ написан
    Комментировать
  • Как лучше сделать авторизацию в SPA?

    Fernus
    @Fernus
    Техник - Механик :)
    Какой пуль является best practices для Laravel+Vue?


    Сначала читаем:
    1. Laravel Passport VS JWT
    2. Laravel Sanctum vs Passport

    Потом, думаю, сами ответите на свой же вопрос :)
    Ответ написан
    6 комментариев
  • Существует ли какой-нибудь алгоритм склонения существительных во множественном числе?

    R0dger
    @R0dger
    Laravel/Yii/2 AngularJs PHP RESTful API
    Ну как минимум воспользоваться вот чем - www.unicode.org/cldr/charts/27/supplemental/langua...
    + есть ICU системы склонения..
    Ответ написан
    1 комментарий
  • Существует ли какой-нибудь алгоритм склонения существительных во множественном числе?

    Adamos
    @Adamos
    Если всерьез, а не для курсовой, то phpMorphy.
    Если для обучения - любить Зализняка до тех пор, пока не надоест.
    Ответ написан
    Комментировать
  • Существует ли какой-нибудь алгоритм склонения существительных во множественном числе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Алгоритма нет, в русском языке есть правила склонения, согласно которым существительные в зависимости от рода и окончания делятся на три основные группы (1-е, 2-е и 3-е склонение). Кроме того выделяют несклоняемые (присутствует форма только множественного числа) и 12 разносклоняемых существительных.
    Ответ написан
    Комментировать
  • Отрисовка графика на Raphaël js?

    @GreatRash
    Если вас не интересует ИЕ ниже 9 версии, то не нужно использовать Рафаэль, лучше воспользоваться d3.js, которая специально заточена под представление данных (собственно D3 означает Data Driven Documents).

    Вот что-то типа того вам надо походу (как раз на d3 сделано).
    Ответ написан
    Комментировать
  • Отрисовка графика на Raphaël js?

    @OneFive
    React.js <3
    RaphaelJS больше не развивается, используйте snapsvg.io от того же автора.
    Ответ написан
    Комментировать
  • Чем отличаются self::, parent:: и static:: в PHP?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Проще объяснить на примере:

    class A {
      public static function getValSelf()
      {
      	return new self();
      }
    
      public static function getValStatic()
      {
      	return new static();
      }
    }
    
    Class B extends A {
    }
    
    var_dump(get_class(B::getValSelf())); // 'A'
    var_dump(get_class(B::getValStatic())); // 'B'
    Ответ написан
    Комментировать
  • Чем отличаются self::, parent:: и static:: в PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Позднее связывание — это значит привязка будет происходит не на этапе компиляции кода, а на этапе его исполнения.
    В примере Кирилл Арутюнов это видно — self всегда указывает на тот класс, в котором оно объявлено, а static — на класс в котором он по факту будет вызван с учетом всех наследований.
    Ответ написан
    Комментировать
  • Как вывести список модулей nginx списком?

    BuriK666
    @BuriK666 Куратор тега Nginx
    Компьютерный псих
    nginx -V 2>&1|xargs -n1|grep module
    Ответ написан
    Комментировать
  • Почему в логах nginx мне пишет (13: Permission denied) при выполнение php-скриптов?

    @Ridorix
    Кому-то может помочь - SELinux может блокировать.
    Либо настроить её, либо отключить.
    Ответ написан
    1 комментарий
  • Где можно скачать список русских фамилий, имён, отчеств?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Возможно кому ни будь еще пригодится
    mydata.biz/ru/catalog/databases/names_db
    Ответ написан
    1 комментарий
  • Докеризация приложения?

    Философия докера размещать в одном контейнере один сервис.
    Например, отдельные контейнеры: MySQL, php-fpm, nginx. Как будто это коробки в локальной сети, видят друг друга. А во внешний мир торчит только порт 443 nginx.

    Для удобного управления многоконтейнерным приложением есть Docker Compose. В одном файле docker-compose.yml лаконично описываются все сервисы. Это короче, чем bash скрипт и «так правильно».

    Всё в одном контейнере с ubuntu —
    плохая практика

    Можно и все делать в одном контейнере. Но это мало чем отличается от просто vps. Так же приходится ставить доп. софт, обновления. И потом, чтобы переехать на другой сервер, тащить тяжёлый образ. И никак не масштабировать.
    Ответ написан
    8 комментариев
  • Докеризация приложения?

    @vitaly_il1
    DevOps Consulting
    В целом стоит почитать https://12factor.net/ru/ - но это больше концептуальная статья.
    Насчет процесса разработки - есть два пути (и, естественно, варианты между ними):
    1) разрабатывать и тестировать по старинке, на своем лаптопе. Когда что-то заработает, запаковать в контейнеры, потом перепаковывать новые версии.
    2) И правильный путь - перед тем, как писать код, создать репо в Git, написать CI скрипты для построения images, deploy, testing, ...
    И тогда при каждом commit (или только для PR) CI будет запускать тесты, билдить images, и т.д.

    Сделать это не так сложно как было десять лет назад - не надо инсталлировать Jenkins или ему подобные программы, в GitHub есть GitHub Actions (с бесплатным планом) в котором на YAML описываем что надо сделать при коммите.
    Ответ написан
    Комментировать
  • Где можно найти генератор адресов по России?

    bemulima
    @bemulima
    ФуллСтекРазработчик
    Можно с помощью https://github.com/fzaninotto/Faker
    $faker = new Faker('ru_RU');
    echo $faker->address; //152982, Калининградская область, город Чехов, спуск Ленина, 44
    Ответ написан
    Комментировать
  • Особенности сравнение дат в php?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    первый параметр - это формат даты.
    все, что не входит в известные модификаторы - интерпретируется как число.
    при строковом сравнении второе больше первого...

    попробуй strtotime и формат даты - YYYY-MM-DD
    Ответ написан
    Комментировать