使用NodeJS和Express的简单电子邮件发件人

时间:2015-07-30 11:04:34

标签: node.js web github

我对网络开发和网络相关概念和框架(IP,网络,路由器,我每次都畏缩:D)都很陌生。

但是,由于一些实习工作,我“强迫自己”使用这个并且由于在互联网上的大量挖掘,我设法开发了一个超级简单的应用程序,如果我在我的本地主机下可以发送电子邮件。但是,我有一些(很多)问题,但首先是包含我所有代码的文件:

Package.json文件

{
    "name": "email-node",
    "version": "1.0.0",
    "dependencies": {
        "nodemailer": "~0.7.1",
        "express": "~4.5.1"
    }
}

的index.html

<html>
<head>
    <title>Node.JS Email application</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>// <![CDATA[
    $(document).ready(function(){
        var from,to,subject,text;
        $("#send_email").click(function(){     
            to=$("#to").val();
            subject=$("#subject").val();
            text=$("#content").val();
            $("#message").text("Sending E-mail...Please wait");
            $.get("http://localhost:3000/send",{to:to,subject:subject,text:text},function(data) {
                if(data=="sent") {
                    $("#message").empty().html("Email is been sent at "+to+" . Please check inbox !");
                }
            });
        });
    });
</script>
</head>
<body>
    <div id="container">
        <h1>Mailer In Node.JS</h1>
        <input id="to" type="text" placeholder="Enter E-mail ID where you want to send" />
        <input id="subject" type="text" placeholder="Write Subject" />
        <textarea id="content" cols="40" rows="5" placeholder="Write what you want to send"></textarea>
        <button id="send_email">Send Email</button>
        <span id="message"></span>
    </div>
</body>
</html>

app.js文件

var express=require('express');
var nodemailer = require("nodemailer");
var app=express();
/*
Here we are configuring our SMTP Server details.
STMP is mail server which is responsible for sending and recieving email.
*/
var smtpTransport = nodemailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "MYGMAIL@gmail.com",
        pass: "MYGMAILPASS"
    }
});
/*------------------SMTP Over-----------------------------*/

/*------------------Routing Started ------------------------*/

app.get('/',function(req,res){
    res.sendfile('index.html');
});
app.get('/send',function(req,res){
    var mailOptions={
        to : req.query.to,
        subject : req.query.subject,
        text : req.query.text
    }
    console.log(mailOptions);
    smtpTransport.sendMail(mailOptions, function(error, response){
        if(error){
            console.log(error);
            res.end("error");
        }else{
            console.log("Message sent: " + response.message);
            res.end("sent");
        }
    });
});

/*--------------------Routing Over----------------------------*/

app.listen(3000,function(){
    console.log("Express Started on Port 3000");
});

从我在这里读到的是我得出的结论:

Node.js + Express应用程序始终“侦听”端口3000上的传入连接,这是我使用的值。

理想情况下,要从网站而不是本地主机发送内容,我认为问题出在index.html文件中。

具体来说,这一行:

$.get("http://localhost:3000/send",{to:to,subject:subject,text:text},function(data){

而不是使用http://localhost:3000/send我会使用类似的东西:

http://bruno-oliveira.github.io:3000/send

我已经阅读了无数的论坛和帖子,尝试了以下所有内容:

$.get("/send",{to:to,subject:subject,text:text},function(data){

搜索github服务器IP地址范围(https://developer.github.com/v3/meta/)尝试直接使用它们,似乎没有任何工作......

该应用程序应该在这里托管:

http://bruno-oliveira.github.io/

有人可以帮助我吗?

最佳,

布鲁诺

1 个答案:

答案 0 :(得分:1)

只是说我设法设置了这个并使用heroku平台启动并运行:

Heroku

你也应该尝试一下。