Джанго: как перенаправить на mailto - PullRequest
3 голосов
/ 18 октября 2010

У меня есть действие администратора Django, которое называется «Отправить выбранным пользователям по электронной почте». Проверьте некоторых участников и нажмите кнопку «Перейти», и откроется почтовая программа пользователя. Электронные письма выбранных участников были предварительно введены.

Это работает Django HttpResponseRedirect (uri) с uri, являющимся "mailto: email1, email2 .. где адреса email1, email2 ... были найдены на сервере.

Единственная проблема заключается в том, что браузер перенаправляет на пустую страницу также и открытие клиентской почтовой программы.

Есть ли способ избежать этого?

- Петр

Ответы [ 3 ]

2 голосов
/ 04 сентября 2014

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

Я столкнулся с этой проблемой, потому что сайт, который я создавал, имел встроенную систему отслеживания, которая отслеживала URL-адреса исходящих ссылок для объявлений, размещаемых самостоятельно. Если я не перенаправляю, нет способа (без изменения способа реализации) отслеживать клик, так как я не использую API или что-то еще.

Легким решением было сделать то, что вы сделали, отправив обратно HttpResponse(), содержимое которого - метатег

<meta http-equiv="refresh" content="0;url=mailto:youremail@test.com" />

Это приводит к обновлению страницы при загрузке, что вызывает действие mailto:.

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

К сожалению, я не проверял это, но эти два метода должны выполнить перенаправление mailto:, которое не оставляет пустое окно / вкладку позади.

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

1 голос
/ 18 октября 2010

Не используйте HttpResponseRedirect.Просто сделайте ссылку mailto: line.<a href="mailto:email1...">Email selected members</a>

0 голосов
/ 19 октября 2010

Я не думаю, что это возможно.RFC 2616 говорит, что редирект 302:

Временный URI ДОЛЖЕН быть задан полем Location в ответе.Если метод запроса не был HEAD, объект ответа ДОЛЖЕН содержать короткую гипертекстовую заметку с гиперссылкой на новый URI

Так что пустая страница, которую я вижу, является (очень) короткойгипертекстовая заметка.Браузер получает инструкцию по перенаправлению, открывает временную страницу с сообщением о перенаправлении, а затем получает перенаправленный URL-адрес.Но с mailto: URL временная страница, очевидно, остается.

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