Отправка электронной почты нескольким получателям через нодмейлер не работает - PullRequest
0 голосов
/ 27 февраля 2019

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

Это код моего сервера:

const express = require('express');
const path = require('path');
const cons = require('consolidate');
const bodyParser = require('body-parser');
const nodemailer = require("nodemailer");
const app = express();

app.engine('html', cons.swig)
app.set('../public', path.join(__dirname, 'public'));

app.use('../src/css', express.static(path.join(__dirname, 'src/css')));
app.use('../src/js', express.static(path.join(__dirname, 'src/js')));

app.use(bodyParser.urlencoded({ extended: false}));
app.use(bodyParser.json());

app.post('/send',(req,res) => {
    const output = `
        <p>name of client: ${req.body.name}</p>
    `;

    let transporter = nodemailer.createTransport({
        host: "smtp.ethereal.email",
        port: 587,
        secure: false,
        auth: {
        user: "*****@ethereal.email",
        pass: "********"
        },
        tls: {
            rejectUnauthorized: false
        }
    });

    let mailOptions = {
        from: `${req.body.email}`,
        to: "******@gmail.com",
        subject: "Node contact request",
        text: "Hello world?",
        html: output
    };

    transporter.sendMail(mailOptions, (error, info) => {
        if(error) {
            return console.log(error);
        }
        console.log("Message sent: %s", info.messageId);
        console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));

        res.render('index')
    });
});

app.listen(5000);

Я использую приложение «Реакция» для своего внешнего интерфейса (электронная коммерция) и хочу, чтобы после отправки электронного письма клиент видел сообщение «Письмо было отправлено» (местоположение пока не имеет значения).Как я могу сделать это после отправки формы?Прямо сейчас клиент направляет localhost: 5000 / send вместо того, чтобы оставаться на той же странице.

Это мой код реакции:

import React from 'react';

const contact = () => {
    return (
    <form className="contact" action="http://localhost:5000/send" method="post">
        <div className="contact-topFields">
            <div className="contact-topFields-email">
                <input 
                    className="contact-topFields-email-input" 
                    type="email" 
                    name="email" 
                    required/>
                <ion-icon id="email-icon" name="mail"></ion-icon>
                <p className="contact-topFields-email-text">Email</p>
            </div>
            <div className="contact-topFields-name">
                <input 
                    className="contact-topFields-name-input" 
                    type="text" 
                    name="name" 
                    required/>
                <ion-icon id="name-icon" name="person"></ion-icon>
                <p className="contact-topFields-name-text">Name</p>
            </div>
        </div>
        <div className="contact-bottomFields">
            <div className="contact-bottomFields-phone">
                <input 
                    className="contact-bottomFields-phone-input" 
                    type="text" 
                    name="phonenumber" 
                    required/>
                <ion-icon id="phone-icon" name="call"></ion-icon>
                <p className="contact-topFields-phone-text">phone</p>
            </div>
        </div>
        <div className="contact-text">
            <textarea className="contact-text-textarea" name="message" required></textarea>
        </div>
        <button className="contact-submitButton" type="submit">send </button>
    </form>

    )
}

export default contact;

1 Ответ

0 голосов
/ 27 февраля 2019

Чтобы предотвратить перенаправление страницы на localhost: 5000 / send:

Чтобы инициировать отправку электронного письма, не изменяя представление пользователя, вы можете отменить отправку формыfunction.

Например, вы можете сделать это в своем коде JSX:

<form className="contact" onSubmit={{this.handleSubmit}}>
<- whatever inside form ->
</form>

Затем вы можете захотеть определить функцию handleSubmit:

function handleSubmit (evt) {
  evt.preventDefault() // this is used to prevent ui from being directed

  // Do http request here, use a http agent such as fetch(), axios() etc etc. 

}
...