Javascript Nodejs和NodeEmailr是否接收用户ip地址?
您好,我想回显此命令Javascript Nodejs和NodeEmailr是否接收用户ip地址?,javascript,node.js,Javascript,Node.js,您好,我想回显此命令request.connection.remoteAddress 在node.js中|回显用户ip地址是否有人可以帮助 我正试图通过NodeEmailer接收带有此代码的联系人电子邮件 const bodyParses = require('body-parser'); const exphbs = require('express-handlebars'); const path = require('path'); const nodemailer = require('
request.connection.remoteAddress
在node.js中|回显用户ip地址是否有人可以帮助
我正试图通过NodeEmailer接收带有此代码的联系人电子邮件
const bodyParses = require('body-parser');
const exphbs = require('express-handlebars');
const path = require('path');
const nodemailer = require('nodemailer');
const app = express();
// View engine setup
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
// Main Folder
app.use('/public', express.static(path.join(__dirname, 'public')));
//Body Parses Middleware
app.use(bodyParses.urlencoded({ extended: false}));
app.use(bodyParses.json());
app.get('/', (req, res) => {
res.render('contact', {layout: false});
});
app.post("/send", async (req,res,next) => {
const output = `
<p>You have a new contact requiest</p>
<h3>Detajet</h3>
<ul>
<li>Name: ${req.body.name}</li>
<li>Comapny: ${req.body.company}</li>
<li>Email: ${req.body.email}</li>
<li>Phone: ${req.body.phone}</li>
<li>${res.send(ip+"\n")}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true, // true for 465, false for other ports
auth: {
user: 'user@gmail.com', // generated ethereal user
pass: 'password' // generated ethereal password
},
tls:{
rejectUnauthorized:false
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Tipi" <aj.production15@gmail.com>', // sender address
to: "test@gmail.com", // list of receivers
subject: "test", // Subject line
text: "Hello world?", // plain text body
html: output // html body
});
console.log("Message sent: %s", info.messageId);
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
res.render('tjetra', {layout: false});
main().catch(console.error);
});
app.listen(3000, () => console.log('Server started...'));
constbodyparses=require('body-parser');
const exphbs=require('express-handlebar');
const path=require('path');
const nodemailer=require('nodemailer');
常量app=express();
//查看引擎设置
发动机附件(“把手”,exphbs());
应用程序集(“查看引擎”、“把手”);
//主文件夹
app.use('/public',express.static(path.join('public'));
//Body解析中间件
use(bodyParses.urlencoded({extended:false}));
use(bodyParses.json());
应用程序获取(“/”,(请求,请求)=>{
res.render('contact',{layout:false});
});
app.post(“/send”),异步(请求、恢复、下一步)=>{
常量输出=`
你有一个新的联系人要求
德塔杰
- 名称:${req.body.Name}
- 公司:${req.body.company}
- 电子邮件:${req.body.Email}
- 电话:${req.body.Phone}
- ${res.send(ip+“\n”)}
消息
${req.body.message}
`;
让transporter=nodeEmailer.createTransport({
主机:“smtp.gmail.com”,
港口:465,
安全:true,//对于465为true,对于其他端口为false
认证:{
用户:'user@gmail.com“,//生成的ethereal用户
pass:'password'//生成的以太密码
},
tls:{
拒绝:错误
}
});
//使用定义的传输对象发送邮件
let info=wait transporter.sendMail({
发件人:“'Tipi',//发件人地址
至:test@gmail.com“,//接收者列表
主题:“测试”//主题行
text:“你好,世界?”,//纯文本正文
html:output//html正文
});
console.log(“发送的消息:%s”,info.messageId);
log(“预览URL:%s”,nodeEmailer.getTestMessageUrl(info));
res.render('tjetra',{layout:false});
main().catch(console.error);
});
app.listen(3000,()=>console.log('Server started…');
因此,当我收到要获取的电子邮件和用户ip时,我会尝试。
我想我应该使用代码:request.connection.remoteAddress,但我不知道当用户提交给我的表单和用户ip地址时如何连接。您需要更准确地说明您想做什么,但我会尽力帮助您……如果我理解清楚,您希望在邮件正文中发送ip,使用nodemailer
首先是如何在node.js
中获取ip。request元素有一个带有express(您使用)的ip参数,因此只需使用:
const ip_address = req.ip;
然后通过nodemailer
发送:
let transporter = nodeMailer.createTransport({
host: 'smtp.free.fr',
port: 25,
secure: false
});
let mailOptions = {
from: '"Your subject" <no-reply@yourhost.com>',
to: 'emailReceiver@receiver.com',
subject: 'Welcome!',
text: 'Here is your text + ip: '+ ip_address,
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});
let transporter=nodeEmailer.createTransport({
主机:“smtp.free.fr”,
港口:25,
安全:错误
});
让邮件选项={
发件人:“‘您的主题’”,
致:'emailReceiver@receiver.com',
主题:“欢迎!”,
text:'这是您的text+ip:'+ip_地址,
};
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}
console.log('发送的消息%s:%s',info.messageId,info.response);
});
还要知道,在本地主机上运行此操作时,您的ip将始终返回:
::1
,iptoy
功能没有意义。你甚至都没用它。它会将响应发送回客户端,而不是将ip放入电子邮件中(这可能是您想要的?)。我补充说,错误地测试以修复ip问题,这是否回答了您的问题?嘿,我把const ip\u address=req.ip放在哪里代码>在我的code@MoekUgD在发送邮件之前,在app.post('/send')
中声明此变量,然后再声明const output
,如果它解决了您的问题,请不要忘记将此标记为正确答案或对其进行投票。您好,当我收到电子邮件时,它说ip::1这是正常的,您正在本地主机上运行它,它将始终返回::1。部署你的应用程序时,req.ip
将返回一个真实的ip地址。嘿,我使用firebase当我上传它要求我上传公用文件夹中的文件时,我这样做了,但当我转到网站/firebase时,它显示未找到/When i do website.com/views/contact.handlebar,它显示但不发送电子邮件