Инструкции для принятия электронных писем, как введено к приложению

По-видимому, причина в том, что хранилище Azure не может сохранить исходную метку времени скопированного файла. Я искал обходной путь, который рекомендовал изменить исходный код yarn-common, чтобы отключить блок кода проверки меток времени при копировании файла, чтобы избежать исключений, чтобы работа MR продолжалась непрерывно.

Вот исходный код в последней версии yarn-common, который проверяет метку времени для скопированного файла и выдает исключение.

/** #L255
   * Localize files.
   * @param destination destination directory
   * @throws IOException cannot read or write file
   * @throws YarnException subcommand returned an error
   */
  private void verifyAndCopy(Path destination)
      throws IOException, YarnException {
    final Path sCopy;
    try {
      sCopy = resource.getResource().toPath();
    } catch (URISyntaxException e) {
      throw new IOException("Invalid resource", e);
    }
    FileSystem sourceFs = sCopy.getFileSystem(conf);
    FileStatus sStat = sourceFs.getFileStatus(sCopy);
    if (sStat.getModificationTime() != resource.getTimestamp()) {
      throw new IOException("Resource " + sCopy +
          " changed on src filesystem (expected " + resource.getTimestamp() +
          ", was " + sStat.getModificationTime());
    }
    if (resource.getVisibility() == LocalResourceVisibility.PUBLIC) {
      if (!isPublic(sourceFs, sCopy, sStat, statCache)) {
        throw new IOException("Resource " + sCopy +
            " is not publicly accessible and as such cannot be part of the" +
            " public cache.");
      }
    }

    downloadAndUnpack(sCopy, destination);
  }

7
задан Larsenal 19 July 2013 в 14:52
поделиться

8 ответов

Некоторые инструкции и соображения:

Вопрос об адресе: лучшая вещь сделать состоит в том, чтобы использовать "+" дополнительная часть электронного письма (myaddr**+custom**@gmail.com) адрес. Это помогает направить, но больше всего, легче отслеживать маршрутизацию адреса к Вашей системе. Другие методы могли бы использовать маркер в предмете

Спам: Действительно массово разошлите обработку вне приложения и имейте фильтр приложения на основе заголовка.

Организация очередей неудавшихся сообщений: не Делайте по большей части. Стандартное почтовое поведение состоит в том, чтобы попытаться в течение максимум 3 дней передать сообщение. Для почтового сервера приложения все это делает, создают гигантские буферные файлы почты, которую Вы никогда не будете, скорее всего, обрабатывать. Только очередь обменивается сообщениями, если причины отказа находятся вне Вашего контроля (например, сервер снижается).

Недопустимая обработка сообщений: Там являются кратными способам, которыми сообщение может быть недопустимым. Некоторые - ограничения библиотеки (она не может проанализировать адрес, даже при том, что RFC допустимый). Другие из-за поврежденных клиентов (например, опуская кавычки вокруг определенных заголовков). Других могло бы быть слишком большим, или использовать неизвестное кодирование, пропустить критические заголовки, иметь несколько значений, где должно только быть один, нарушить некоторых семантических характерный для Вашего приложения, и т.д., и т.д., и т.д. В основном, где когда-либо почта Java, API мог выдать исключение, является случаем обработки ошибок, необходимо определить, как соответственно обработать.

Ошибочные ответы: Не каждая ошибка заслуживает ответа. Некоторые сгенерированы из-за спама, и необходимо постараться не передавать сообщения обратно тем адресам. Другие от автоматизированных систем (самостоятельно, респондент отпуска, другая почтовая система приложения, и т.д.), и если Вы ответите, то она отправит Вам другое сообщение, повторяя цикл.

Определенные для клиента взломы: как вышеупомянутый, у каждого клиента есть мало различий, это усложнит Ваш код. Имейте это в виду каждый раз, когда Вы пересекаете структуру сообщения.

Отправители, ответы и циклы: В зависимости от Вашей ситуации Вы могли бы получить почту от некоторых следующих источников:

  • Настоящие люди, возможно, из внешних источников
  • Списки рассылки
  • Самостоятельно, или один из Ваших собственных адресов получателя
  • Другие почтовые серверы (возвраты, отказы, и т.д.)
  • Объект в другой системе (my-ldap-group@company.com, system-monitor@localhost)
  • Автоматизированная система
  • Псевдоним к одному из вышеупомянутого
  • Псевдоним к псевдониму

Теперь, Ваш первый инстинкт, вероятно, "Только принимают почту из корректных источников!", но это вызовет Вас много головных болей по линии, потому что люди отправят ужасные вещи в почтовый сервер приложения. Я нахожу, что лучше принимает все и явно отклоняет исключения.

Отладка: Сохраните копию заголовков любого сообщения, которое Вы получаете. Это выручит чрезвычайно каждый раз, когда у Вас есть проблема.

Править--

Я купил книгу, Создав Масштабируемые веб-сайты, упомянутые rossfabricant. Это-does-имеет хороший почтовый раздел. Несколько важных моментов, которые это имеет, об обработке электронной почты из операторов беспроводной связи и аутентификации электронных писем.

10
ответ дан 6 December 2019 в 12:55
поделиться

Можно установить адрес, от которого послано электронное письмо, что будет помещено в К: обратитесь, если кто-то просто нажимает 'Reply - to'. Сделайте это уникальным, и Вы сможете сказать, куда это прибыло из, и туда, где это должно быть направлено назад к.

Когда дело доходит до того, чтобы ставить имя около него, хотя '"что-то здесь"' - поместило что-то приглашающее, чтобы иметь их просто, отвечают на почту. Я видел одно главное веб-приложение с электронной почтой, получая, который имеет, 'не отвечают', который выключает людей от фактической отправки чего-либо к нему все же.

2
ответ дан 6 December 2019 в 12:55
поделиться

Править: Я неправильно понял Ваш вопрос.

Вы могли настроить свой почтовый сервер к вместилищу и генерировать уникальный ответ - для обращения. Например, CST-2343434@example.com.

Процесс опроса на сервере мог считать ящик входящих сообщений и проанализировать соответствующую часть от полученного электронного письма, CS-2343434 мог означать идентификатор № 2343434 билета Поддержки клиентов.

Я реализовал что-то вроде этого с помощью JavaMail API.

Просто мысль.

1
ответ дан 6 December 2019 в 12:55
поделиться

Создание Масштабируемых веб-сайтов имеет хороший раздел по обработке электронной почты. Это записано разработчиком Flickr.

alt text
(источник: lsl.com.au)

2
ответ дан 6 December 2019 в 12:55
поделиться

Bose имеет довольно большую систему, где они встраивают идентификатор Очереди и Билета в саму электронную почту.

Моя компания имеет традиционный Случай # на строке темы, но при СОЗДАНИИ случая потребуйте, чтобы определенная символьная строка "Новый Случай" "Проблема Технической поддержки" о строке темы прошла через спам-фильтры.

Если электронная почта не соответствует создаванию или обновляет семантику, автореспондент передает электронное письмо обратно получателю, демонстрирующему, как правильно послать электронное письмо или направляет их к нашим форумам или сайту веб-поддержки.

Это помогает устранить проблему спама и все же все еще доступно для широкой технической аудитории, которая является все еще в большой степени почтовым зависимым.

0
ответ дан 6 December 2019 в 12:55
поделиться

Лучший способ добиться этого - написать оконную службу, которая работает как почтовый клиент [pop3 или imap] , Эта служба Windows должна выполнить синхронизированное действие, запускаемое таймером, который подключается к почтовому серверу и опрашивает сервер на наличие непрочитанных сообщений, доступных в почтовом ящике. Идентификатор электронной почты для проверки - это идентификатор электронной почты, на который пользователи будут вводить свои данные. Если клиент службы Windows обнаружит, что есть какие-либо новые письма, он должен загрузить и отфильтровать тело письма и продолжить обработку, основываясь на вводе пользователя в письме. Вы можете разместить обработку ввода в той же службе Windows, но делать это не рекомендуется. Служба Windows может поместить входные данные в специальный каталог или базу данных приложения, откуда ваше основное приложение может считывать пользовательские входные данные, полученные по электронной почте, и обрабатывать их по мере необходимости.

Для этого вам потребуется разработать высокопроизводительный клиент TCP / IP. Я советую вам не использовать библиотеку .Net по умолчанию из-за проблем с производительностью, вместо этого используйте одну из лучших доступных реализаций TCP / IP с открытым исходным кодом для .Net, такую ​​как XF.Server из kodart . мы использовали это в наших приложениях и достигли удивительно хороших результатов.

Надеюсь, это поможет ..

вместо этого используйте одну из лучших доступных реализаций TCP / IP с открытым исходным кодом для .Net, такую ​​как XF.Server из kodart . мы использовали это в наших приложениях и достигли удивительно хороших результатов.

Надеюсь, это поможет ..

вместо этого используйте одну из лучших доступных реализаций TCP / IP с открытым исходным кодом для .Net, такую ​​как XF.Server из kodart . мы использовали это в наших приложениях и достигли удивительно хороших результатов.

Надеюсь, это поможет ..

1
ответ дан 6 December 2019 в 12:55
поделиться

Спам будет определенным беспокойством. Однако, так как Вы - инициирование разговор, можно использовать присутствие уникального идентификатора (я предпочитаю использовать строку темы - "Заявка на устранение неисправности: Не мог войти в сеть... [artf123456]") для отфильтровывания спама. Обязательно проверьте фильтр при случае, так как некоторые люди искажают предмет при ответе.

0
ответ дан 6 December 2019 в 12:55
поделиться

Электронная почта - это помойка плохих стандартов и неработающих клиентов. Вы должны быть готовы принять почти все в качестве входных данных. Вы должны быть очень прощающими о том, какие виды ввода допускаются. Все, что легко для вас запрограммировать, вероятно, будет трудно для ваших пользователей правильно использовать. Рассмотрим старые программы списков рассылки, которые требуют от вас вводить команды в строке темы. Только хардкорные ботаны могут использовать их эффективно. И некоторые из упомянутых вами проблемных CRM-вещей, которые вы упомянули, имеют причудливые требования, такие как принуждение пользователя отвечать между двумя конкретными текстовыми маркерами в тексте. Такие вещи сбивают людей с толку.

Вам придется иметь дело с почтовыми клиентами, которые отправляют вам отформатированный текст вместо простого текста. Некоторые почтовые клиенты до сих пор не неправильно обрабатывать HTML ( кашель GMail), поэтому ваши ответы также должны быть оформлены соответствующим образом. Существуют различные способы загрузки фотографий по электронной почте, особенно когда речь идет о мобильных телефонах. Вам потребуется реализовать различные хаки и эвристики для решения этих ситуаций.

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

Наконец, другие упоминали об использовании конкретных адресов электронной почты для однозначной идентификации «разговора». Это, вероятно, самый простой способ сделать это, так как содержимое почты часто не выдерживает обратного пути к клиенту. Будьте готовы, однако, получить почту на старые идентификаторы от старых клиентов, которые, вместо того, чтобы как-то открыть новый билет, ответьте на старый билет. Вашему приложению, вероятно, понадобится каким-то образом отправить письма со старым идентификатором в новый ящик, вручную или автоматически. Для системы CRM очень вероятно, что пользователь ответит на старое письмо, даже если вы уже отправили ему новое письмо с новым идентификатором. Что касается того, следует ли вам использовать такme.email.address+some.id@yourdomain.com или просто some.id@yourdomain.comЯ бы пошел с последним, потому что знак плюс смущает некоторые почтовые клиенты. Сделайте ваши идентификаторы направляющими или что-то в этом роде, и у вас есть возможность проверить их (например, CRC или что-то в этом роде), и вы получите меньше мусора. Люди никогда не должны вводить GUID, просто ответить на них. Недостатком является фильтрация спама: компьютер пользователя может рассматривать такие адреса электронной почты как спам, и не будет простого способа внести в белый список адреса.

Что напоминает мне: отправка электронной почты в наши дни полна ловушек. Существует много технологий защиты от спама, которые чрезвычайно затрудняют отправку электронных писем вашим клиентам. Вам нужно будет изучить все это, и вы должны быть осторожны и провести некоторое тестирование, чтобы убедиться, что вы можете связаться с основными поставщиками электронной почты. Веб-сайт, такой как Монитор кампании может помочь вам, если вы отправляете электронное письмо.

0
ответ дан 6 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: