Как заставить почту работать на Android Chrome? - PullRequest
0 голосов
/ 13 декабря 2018

Итак, я видел пару вопросов о том, что mailto не работает на Android, моя проблема немного более конкретна, чем эта.На моем веб-сайте есть ссылка для отправки по почте в виде кнопки отправки для отправки заполненных на моем сайте форм прямо на мою электронную почту.Ссылка отлично работает на настольных компьютерах в Chrome и Firefox, а также была протестирована и работает на iPhone 8+.Тем не менее, эта кнопка абсолютно ничего не делала в Chrome на моем Samsung Note 8. Я подумал, что это просто Android, поэтому я решил протестировать его на нативном интернет-сервисе Samsung, и он работал просто отлично!Так что он работает в настольной версии Chrome и в нехромных веб-браузерах на Android ... В браузере Chrome на Android есть нечто особенное, что не совпадает с моей ссылкой на mailto.

ПримечаниеЯ читал в другом месте, что добавление "target =" _ top "к ссылке mailto заставляет ее работать на устройствах Android. Это не сработало для меня.

моя ссылка mailto вложена в объявление формы моеговеб-страница (я подозреваю, что моя часть «target =» _ top »не может помочь?) и записана как:

<form class="questionnaire" action="mailto:carl@cuttingedgelighting.com?Subject=New%20Vendor" target="_top" method="post" enctype="text/plain">

Я не уверен, что другие части кода могутбудь любезен, дай мне знать, и я с удовольствием опубликую все, что тебе может понадобиться.Спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

Использование mailto в папке from обычно не надежно, поэтому в основном это проблема совместимости с chrome mobile Mythical Mailto .

Лучшее и наиболее элегантное решение - обрабатывать запрос на стороне сервера, а не отправлять электронную почту.

Однако еще одним менее изящным решением было бы добавить скрытый тег привязки на страницу, перехватить событие в JS, динамически создать mailto href, добавить ссылку на атрибут href тега привязки и затем активировать привязку.нажмите тег, используя JavaScript.Смотрите JS скрипку ниже.Протестировано на Chrome Mobile.

$('.questionnaire').on('submit', function(e) {

  var messageBody = '';
  $.each($('.questionnaire').serializeArray(), function(i, field) {
    messageBody += field.name + ": " + field.value + '%0D%0A';
  });

  var hreflink = "mailto:carl@cuttingedgelighting.com?Subject=New%20Vendor&body=" + messageBody;
  $('.mail').attr("href", hreflink);
  e.preventDefault();
  $('.mail')[0].click()

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form class="questionnaire" target="_top" method="post" enctype="text/plain">


  First name:<br>
  <input type="text" name="firstname" value="Foo">
  <br> Last name:<br>
  <input type="text" name="lastname" value="bar">
  <br><br>
  <input type="submit" value="Submit">
</form>

<a class="mail" href="mailto:someone@example.com?Subject=Hello%20again" target="_top" style="display: none;">Send Mail</a>
...