web-dev-qa-db-fra.com

Comment puis-je envoyer un formulaire HTML dans un courrier électronique .. pas seulement MAILTO

J'ai un formulaire HTML à remplir, et je le veux afin que, lorsqu'ils cliquent sur le bouton d'envoi, il envoie simplement le courrier électronique, sans afficher son courrier électronique et leur demandant d'envoyer le message eux-mêmes.

Quand j'utilise:

<form action="MAILTO:[email protected]"... >

Cela ne fait qu'ouvrir une nouvelle fenêtre et remplir le corps de l'e-mail, mais je veux que celui-ci envoie simplement un e-mail.

Et y a-t-il un moyen de formater la sortie de ce à quoi le courrier ressemblera? Au lieu de simplement une liste des noms de champs et de la valeur entrée.

Merci.

35
Joe W

En fait, j'utilise ASP C # pour envoyer mes emails maintenant, avec quelque chose qui ressemble à:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Form.Count > 0)
    {
        string formEmail = "";
        string fromEmail = "[email protected]";
        string defaultEmail = "[email protected]";

        string sendTo1 = "";

        int x = 0;

        for (int i = 0; i < Request.Form.Keys.Count; i++)
        {
            formEmail += "<strong>" + Request.Form.Keys[i] + "</strong>";
            formEmail += ": " + Request.Form[i] + "<br/>";
            if (Request.Form.Keys[i] == "Email")
            {
                if (Request.Form[i].ToString() != string.Empty)
                {
                    fromEmail = Request.Form[i].ToString();
                }
                formEmail += "<br/>";
            }

        }
        System.Net.Mail.MailMessage myMsg = new System.Net.Mail.MailMessage();
        SmtpClient smtpClient = new SmtpClient();

        try
        {
            myMsg.To.Add(new System.Net.Mail.MailAddress(defaultEmail));
            myMsg.IsBodyHtml = true;
            myMsg.Body = formEmail;
            myMsg.From = new System.Net.Mail.MailAddress(fromEmail);
            myMsg.Subject = "Sent using Gmail Smtp";
            smtpClient.Host = "smtp.gmail.com";
            smtpClient.Port = 587;
            smtpClient.EnableSsl = true;
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "pward");

            smtpClient.Send(defaultEmail, sendTo1, "Sent using gmail smpt", formEmail);

        }
        catch (Exception ee)
        {
            debug.Text += ee.Message;
        }
    }
}

Ceci est un exemple utilisant gmail en tant qu’expéditeur de messagerie smtp. Une partie de ce qui est ici n’est pas nécessaire, mais c’est la façon dont je l’utilise, car je suis sûr qu’il existe des moyens plus efficaces de la même manière.

2
Joe W

> Réponse 2019 = La Facile Façon d'utiliser le script Google Apps ( 5 minutes)

Nous avons eu un défi similaire à résoudre hier et nous l'avons résolu à l'aide d'un script Google Apps!

Envoyer un e-mail à partir d'un formulaire HTML Sans un backend ( serveur) via Google!

La solution prend 5 minutes à mettre en œuvre et j'ai déjà documenté avec = instructions pas à pas: https://github.com/nelsonic/ html-form -send-email-via-google-script-sans-serveur

Bref aperçu

A. À l'aide de l'exemple de script, déployez un script Google App.

Déployez l'exemple de script en tant que script Google Spreadsheet APP: google-script-just-email.js

3-script-editor-showing-script

rappelez-vous pour régler le TO_ADDRESS dans le script, là où vous voulez que les courriels soient envoyés.
et copiez le URL de l’APP afin que vous puissiez l’utiliser à l’étape suivante lorsque vous publish le script.

B. Créez votre formulaire HTML et définissez le action sur l'URL de l'application

Utilisation du fichier exemple html: index.html crée un formulaire de base.

7-html-form

rappelez-vous pour coller votre URL de l'APP dans le formulaire action dans le formulaire HTML.

C. Testez le formulaire HTML dans votre navigateur

Ouvrez le formulaire HTML dans votre navigateur, entrez des données et envoyez-les!

html form

Soumettez le formulaire. Vous devriez voir une confirmation de son envoi: form sent

Ouvrez la boîte de réception pour l'adresse e-mail que vous avez définie ( ci-dessus)

email received

Terminé.

Tout à ce sujet est personnalisable, vous pouvez facilement style/thème le forme avec votre favori [~ # ~] css [~ # ~] Bibliothèque et Store les données soumises dans un Google Spreadsheet pour l'analyse rapide.
Les instructions complètes sont disponibles sur GitHub :
https://github.com/nelsonic/ html-form-send-email-via-google-script-sans-serveur

47
nelsonic

Vous faites sens, mais vous semblez mal comprendre le concept d'envoi de courriels.

Le code HTML est analysé côté client, tandis que le courrier électronique doit être envoyé à partir du serveur. Vous ne pouvez pas le faire en HTML pur. Je suggèrerais d'écrire un script PHP) qui traitera de l'envoi du courrier électronique pour vous.

Fondamentalement, au lieu de MAILTO, l'action de votre formulaire devra pointer vers ce script PHP. Dans le script, récupérez les valeurs transmises par le formulaire (en PHP, elles sont disponibles via le $_POST Superglobal) et utilisez la fonction d'envoi de courrier électronique (mail()).

Bien entendu, cela peut également être fait dans d'autres langues côté serveur. Je donne une solution PHP parce que PHP est la langue avec laquelle je travaille.

Un exemple de code simple:

form.html:

<form method="post" action="email.php">
    <input type="text" name="subject" /><br />
    <textarea name="message"></textarea>
</form>

email.php:

<?php
    mail('[email protected]', $_POST['subject'], $_POST['message']);
?>
<p>Your email has been sent.</p>

Bien sûr, le script devrait contenir des mesures de sécurité, telles que vérifier si les valies $ _POST sont disponibles, ainsi que des en-têtes de courrier électronique supplémentaires (courrier électronique de l'expéditeur, par exemple), ce qui constitue peut-être un moyen de traiter l'encodage des caractères - mais c'est aussi complexe pour un exemple rapide;).

23
mingos

Je ne sais pas ce que vous voulez faire est possible. À ma connaissance, l'envoi d'un courrier électronique à partir d'un formulaire Web nécessite une langue côté serveur pour communiquer avec un serveur de messagerie et envoyer des messages.

Utilisez-vous PHP ou ASP.NET?

Exemple ASP.NET

Exemple PHP

4
raydowe