2017-12-15 3 views
1

Für meine Website versuche ich, E-Mail an die Benutzer zu senden. Ich benutzte sendgrid Provider für das Senden der Mail mit NodeJS. Ich bin neu in NodeJS, ich habe die Mail über die Eingabeaufforderung nach ihren Anweisungen auf ihrer Seite gesendet. Aber ich kann es nicht auf dem echten Server implementieren. Zum Senden von E-Mails über sendgrid habe ich ihr Paket installiert. Und ich möchte eine E-Mail an eine bestimmte Veranstaltung senden.So senden Sie E-Mails über einen echten Server (SendGrid)

function goMail() 
{ 
    const sgMail = require('@sendgrid/mail'); 
sgMail.setApiKey(MY_API_KEY); 
const msg = { 
    to: '********[email protected]', 
    from: '12345***@gmail.com', 
    subject: 'Sending with SendGrid is Fun', 
    text: 'and easy to do anywhere, even with Node.js', 
    html: '<strong>and easy to do anywhere, even with Node.js</strong>', 
}; 
sgMail.send(msg); 

} 

HTML:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Bootstrap Example</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <script src="index.js"></script> 
</head> 
<body> 

<div class="container"> 
    <h2>Vertical (basic) form</h2> 
    <form> 
    <div class="form-group"> 
     <label for="email">Email:</label> 
     <input type="email" class="form-control" id="email" placeholder="Enter email" name="email"> 
    </div> 
    <div class="form-group"> 
     <label for="pwd">Password:</label> 
     <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd"> 
    </div> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="remember"> Remember me</label> 
    </div> 
    <button type="submit" class="btn btn-default" onclick="goMail();">Submit</button> 
    </form> 
</div> 

</body> 
</html> 

Bitte erläutern zu informieren, wie tun sie auf den realen Server arbeiten.

Antwort

0

Sie können die Datei index.js nicht direkt in HTML einfügen und die Nodejs-Funktion aufrufen. Stattdessen sollten Sie Express Framework bei Nodejs verwenden und jQuery verwenden, um die Formulardaten zu veröffentlichen. Bitte folgen Sie den Anweisungen unter dem folgenden Link:

Ich hoffe, diese Antwort zeigt Ihnen die richtige Richtung und Ihr Problem zu lösen.

+0

Vielen Dank, können Sie mir andere Tutorials zum Senden von E-Mails von einer Firebase Webapp – Badhusha

+1

@Badhusha, Dies ist, was Sie möglicherweise suchen: https://firebase.google.com/docs/functions/http-events –

0

Wenn Sie Ihr Server-Code implementiert haben dann nur die folgende Route in app.js Datei hinzufügen, für eine API für die Erstellung von E-Mail an den Benutzer zu senden

app.get('/sendEmail', (req, res) => { 
    let sendgrid = require('sendgrid'); 
    let SG = sendgrid('your sendgridKey'); 
    let request = SG.emptyRequest(); 
    request.method = 'POST'; 
    request.path = '/v3/mail/send'; 
    request.body = (new sendgrid.mail.Mail(
    new sendgrid.mail.Email(req.body.from), 
    req.body.subject, // subject 
    new sendgrid.mail.Email(req.body.to), 
    new sendgrid.mail.Content('text/html', 'your html') 
    )).toJSON(); 

    SG.API(request, (err, response)=> { 



    if (response.statusCode >= 200 && response.statusCode < 300) { 
      res.send(response); 
     }); 
}); 

oder Sie können diese Funktion auch außerhalb des Routers definieren damit Sie diese Funktion in jeder Route als Middleware bezeichnen können.

Verwandte Themen