Вам нужно действие в форме, а не в кнопке
Если на мобильном телефоне нет функции mailto, вам потребуется сервер для отправки почты
Но форма должна больше похоже на это
<div class="form">
<form action="mailto:...@gmail.com?subject=MessageFromWebsite" method="post" enctype="text/plain" id="myform" target="_blank">
<label>Name:</label>
<input type="text" name="yourName"><br>
<label>Email:</label>
<input type="email" name="yourEmail"><br>
<label>Message:</label><br>
<textarea rows="10" cols="30" name="yourMessage"></textarea><br>
<button type="submit" class="button"><span>Submit</span></button>
</form>
</div>
Попробуйте вместо ссылки - работает в Chrome для iOS для одного:
https://plungjan.name/SO/mailtotest.html
window.addEventListener("load", function() {
document.getElementById("mailtolink").addEventListener("click", function(e) {
e.preventDefault() // remove after testing
let url = new URL(this.href);
const name = document.querySelector("[name=yourName]").value.trim();
const email = document.querySelector("[name=yourEmail]").value.trim();
const message = document.querySelector("[name=yourMessage]").value.trim();
url.searchParams.set("from", email);
url.searchParams.set("subject", "Message from " + (document.title || location.hostname))
url.searchParams.set("body", name + " said " + message)
this.href=url;
console.log(url)
})
});
.button {
font: bold 11px Arial;
text-decoration: none;
background-color: #EEEEEE;
color: #333333;
padding: 2px 6px 2px 6px;
border-top: 1px solid #CCCCCC;
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #CCCCCC;
}
<div class="form">
<form>
<label>Name:</label>
<input type="text" name="yourName"><br>
<label>Email:</label>
<input type="email" name="yourEmail"><br>
<label>Message:</label><br>
<textarea rows="10" cols="30" name="yourMessage"></textarea><br>
<a target="_blank" class="button" href="mailto:...@gmail.com" id="mailtolink"><span>Submit</span></a>
</form>
</div>