Как настроить SMTP-сервер на nodejs

88
6

Я пытался настроить простую форму, которая отправит электронное письмо пользователю после отправки. Я работал с nodejs и установил nodemailer, чтобы помочь мне. Я использую gmail как SMTP-сервер и сталкиваюсь с некоторыми проблемами. Вот html:

<title> Schedule an Appointment - Name </title>
<link rel="stylesheet" type="text/css" href="public/styles.css">
<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="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="public/script.js"></script>

<ul id="nav">
<li><a href="page.html"> Home </a><br>
<br>
<li><a class="active" href=""> Appointment </a> <br>
<br>
<li><a href="specsPage.html"> Build </a> <br>
<br>
<li><a href="contactPage.html"> Contact </a> <br>
<br>
</ul>

<div id="schedulePage">
<h4> Schedule an Appointment </h4>

<div id="fullForm">

First Name: <input id="firstname" type="text" name="firstname" placeholder="First Name..."> <br>
<br>
Last Name: <input id="lastname" type="text" name="lastname" placeholder="Last Name..."> <br>
<br>
Email: <input id="email" type="text" name="email" placeholder="Email..."> <br>
<br>
Phone Number: <input id="phone" type="text" name="phone" placeholder="Callback Number..."> <br>
<br>
<input id="send_email" type="submit" name="submit" value="Submit">
<span id="message"></span>

</div>
</div>

И скрипты:

$(document).ready(function(){
var from,to,subject,text;
$("#send_email").click(function(){
to=$("#email").val();
firstname=$("#firstname").val();
lastname=$("#lastname").val();
$("#message").text("Sending E-mail...Please wait");
$.get("http://localhost:4000/send",{to:to,subject:firstname,text:lastname},function(data){
if(data=="sent"){
$("#message").empty().html(" Email is been sent at " + to + " . Please check inbox !");
}

});
});

спросил(а) 2017-01-24T05:58:00+03:00 4 года, 5 месяцев назад
1
Решение
109

Во-первых, вам нужно включить менее безопасное приложение в Gmail. Как включить менее безопасные приложения в Google

затем установите узел-почтовый ящик

npm я nodemailer

вставьте эту функцию в свой код

     var nodemailer = require('nodemailer');
// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://yourmail%40gmail.com:yourpass@smtp.gmail.com');

// setup e-mail data with unicode symbols

function sendmail(to,subject,text,html,info) {

var mailOptions = {
from: '"Testing Mail" <youmail@gmail.com>', // sender address
to: to, // list of receivers
subject: subject, // Subject line
text: text, // plaintext body
html: html // html body
};
transporter.sendMail(mailOptions, function(error, infoo){
var res={
responsecode:''
}
if(error){
res.responsecode=401;
return info(new Error(res.responsecode),null);
}
res.responsecode=200;
info(null,res.responsecode+infoo.response);
});}

теперь вызовите функцию

app.get('/send',function (req,res) {
//pass value from your html form here
sendmail('to', 'subject', 'body', '<h1>its Html</h1>', function (err, info) {
if (err) {
console.log("Error is " + err)
return
}
console.log("Email sent. " + info)
})})

ответил(а) 2017-01-24T06:39:00+03:00 4 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема