адрес электронной почты: ссылки и веб-почта

Для будущих посетителей : В новом HttpClient (Angular 4.3+) объект response по умолчанию является JSON, поэтому вам не нужно делать response.json().data больше. Просто используйте response напрямую.

Пример (изменено из официальной документации):

import { HttpClient } from '@angular/common/http';

@Component(...)
export class YourComponent implements OnInit {

  // Inject HttpClient into your component or service.
  constructor(private http: HttpClient) {}

  ngOnInit(): void {
    this.http.get('https://api.github.com/users')
        .subscribe(response => console.log(response));
  }
}

Не забудьте импортировать его и включить модуль в import в [проекта] 1113] app.module.ts :

...
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    // Include it under 'imports' in your application module after BrowserModule.
    HttpClientModule,
    ...
  ],
  ...

13
задан SillyMonkey 29 May 2009 в 07:25
поделиться

6 ответов

Ссылки обрабатываются браузером пользователя. GMail имеет установку на стороне клиента (GMail Notifier), которая позволяет указать, что GMail должен обрабатывать все ссылки mailto.

Но у веб-страницы нет способа указать, что ее ссылка mailto должна обрабатываться приложением веб-почты (даже если бы это было возможно, как бы вы узнали, какое?).

19
ответ дан 1 December 2019 в 20:01
поделиться

Это скорее проблема веб-клиента, она уже доступна для Firefox:

http://starkravingfinkle.org/blog/2008/04/firefox-3-web-protocol- handlers /

, но, в конечном итоге, решать, как его браузер обрабатывает ссылки mailto, остается за пользователем.

5
ответ дан 1 December 2019 в 20:01
поделиться

Я просто проводил мозговой штурм. Вы могли бы прикрепить обработчик Javascript к ссылке, которая спрашивает пользователя, хочет ли он / она войти в учетную запись веб-почты (вместе со списком поставщиков). Если у вас есть правильные URL-адреса для поставщиков веб-почты, вы сможете вызывать их на основе выбора пользователя. Если пользователь отвечает «нет», верните истину из обработчика и, предположительно, ссылка будет работать нормально.

См., Например, http://toric.blogspot.com/2005/07/gmail-compose-link. html и http://blog.monstuff.com/archives/000238.html

2
ответ дан 1 December 2019 в 20:01
поделиться

Вот два примера Opera UserJS, которые вы можете изучить, чтобы дать вам представление о том, как вы можете сделать это на обычных страницах. (Очевидно, что функции, специфичные для UserJS, не будут работать на обычной странице, но вы можете использовать обычные события.)

Эта функция улавливает щелчки левой кнопкой мыши по ссылкам mailto и открывает их, например, в Gmail. Он также может обрабатывать формы.

http://shadow2531.com/opera/userjs/BeforeMailtoURL.js

Этот захватывает все действия mailto, имеет более общий синтаксический анализатор (который поддерживает любое hname, а не только to, cc, bcc, subject и body) и имеет лучший синтаксис строки формата:

http://shadow2531.com/opera/userjs/BeforeMailtoURL.zip

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

Или вы можете просто запустить через страницы и обработать все ссылки mailto.

Но если вы хотите перехватить действия mailto в поле адреса, через window.open или document.location и т. д., вам понадобится что-то вроде HTML5 ' s registerProtocolHandler или что-то вроде поддержки webmailprovider.ini в Opera. Вы можете использовать registerProtocolHandler в Firefox, но по умолчанию он ограничен доменом, на котором вы его установили.

Итак, в основном вы либо конвертируете ссылки mailto в http (s), либо веб-почта создает URI заранее, либо во время mailto вызывается действие. Последний работает намного лучше.

Преобразование ссылки mailto в URI создания веб-почты включает в себя несколько вещей. Во-первых, вам нужно знать, какие переменные строки запроса принимает веб-почта. Затем вам нужно проанализировать URI mailto, чтобы разделить его на нужные вам части. Затем вам нужно декодировать и перекодировать (для нормализации) эти части. Затем вам нужно объединить несколько вхождений значений h вместе. И вам нужно обрабатывать вещи без учета регистра, а также проверять и избегать небезопасных символов,% HH и т. Д.

Для синтаксического анализа вы можете выполнить быстрое и грязное регулярное выражение, но вы получите лучшие результаты с полным анализатором URI mailto и функциями нормализации.

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

1
ответ дан 1 December 2019 в 20:01
поделиться

Гипотетически, предполагая, что клиент веб-почты передает аргументы через процесс аутентификации (или пользователь уже аутентифицирован), я не понимаю, почему это так невозможно. Это невозможно сделать простым способом mailto :, но можно было бы предоставить выборку ссылок на популярные службы веб-почты и использовать Javascript для перехвата кликов по ссылкам mailto: таким образом, чтобы пользователю был представлен раскрывающийся список список возможных веб-почтовых служб (или их локального почтового клиента). Ссылки будут содержать адрес To: / Subject:, но сформированы в той структуре, которая требуется для службы веб-почты.

0
ответ дан 1 December 2019 в 20:01
поделиться

Если вы используете учетную запись электронной почты Google Apps (размещенная электронная почта), программа оповещения Gmail не будет работать. Однако вы можете использовать букмарклет, чтобы изменить все ваши ссылки mailto: на ссылки, которые указывают на вашу электронную почту.

Вот букмарклет, который я написал для этого, он выделит все фиксированные ссылки красным цветом.

javascript:for(var i=0;i<document.links.length;i++){var a=document.links[i];if(a.href.indexOf('mailto:')==0){a.href='http://mail.google.com/a/sample.com/mail?extsrc=mailto&url='+a.href;a.style.backgroundColor='red';a.style.color='white'}};return true;

Просто будьте обязательно измените http://mail.google.com/a/sample.com на подходящий вам адрес хоста.

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

0
ответ дан 1 December 2019 в 20:01
поделиться
Другие вопросы по тегам:

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