2010-11-06 104 views
239

我最近開始編程我的第一個node.js.但是,我發現我無法創建直接發送到我的電子郵件的聯繫人表單,因爲我找不到能夠發送電子郵件的節點上的任何模塊。在Node.js中發送電子郵件?

有誰知道node.js電子郵件庫或示例聯繫表單腳本?

回答

122

節點的電子郵件模板是一個更好的選擇: https://github.com/niftylettuce/node-email-templates

它支持Windows以及

+0

這確實有助於該文檔是相當自我解釋。 – NycCompSci 2010-11-08 04:08:25

+4

https://github.com/marak/node_mailer已棄用。 應該使用這個https://github.com/andris9/Nodemailer – user470370 2012-07-31 06:17:24

+7

那是因爲它的 http://www.nodemailer.com/ 現在 我使用它在我的項目,做工精細, nodejitsu沒有問題通過gmail的smtp服務器發送郵件。 – jascha 2013-04-22 03:08:59

127

Nodemailer基本上是一個模塊,讓你的能力在Node.js編程時輕鬆發送電子郵件。有一些關於如何在http://www.nodemailer.com/上使用Nodemailer模塊的很好的例子。此鏈接中包含有關如何安裝和使用Nodemailer的基本功能的完整說明。

我個人在使用npm安裝Nodemailer時遇到了問題,所以我只是下載了源代碼。有關於npm安裝和下載源的說明。

這是一個非常簡單的模塊使用,我會推薦給任何想用Node.js發送郵件的人。祝你好運!

+1

nodemailer起初工作! – Capy 2013-03-21 08:41:52

+0

對SMTP和Amazon SES都進行了測試,適用於我,將它集成到ConnectedSets框架 – 2013-04-08 22:25:28

+0

簡單,無需設置它。 剛剛複製了示例代碼,更改爲我的信息(閱讀關於SSL安全),它只是工作。 非常適合簡單的電子郵件發件人! – 2015-08-21 22:22:40

58

退房emailjs

在努力使nodemailer工作帶有大附件浪費大量的時間後,發現emailjs快樂至今。

它支持使用正常的File對象發送文件,而不是像nodemailer所要求的那樣發送巨大的緩衝區。意味着你可以鏈接它,f.e.,強大的將附件從html表單傳遞給郵件程序。它也支持排隊..

總而言之,不知道爲什麼nodejitsu ppl選擇nodemailer的基礎上,他們的電子郵件jj更先進。

+2

經過一段時間的使用後,不得不分叉它來解決一個問題:除非在郵件發送過程中,這個東西不會處理套接字事件,並因此在閒置一段時間後停頓,服務器將關閉連接,但沒有任何事件可以處理事件並重置內部變量。你可以在這裏找到分支版本:[https://github.com/silvioster/emailjs](https://github.com/silvioster/emailjs)。現在這個版本已經運行穩定了很長一段時間,沒有攤位。 – silvio 2011-09-25 17:07:15

+18

更新到以前的評論,原作者修復了該錯誤和其他一些錯誤,所以不再需要fork。最新版本應該在[https://github.com/eleith/emailjs](https://github.com/eleith/emailjs) – silvio 2012-05-31 01:51:15

+1

nodemailer也支持附件流,不僅「龐大的緩衝區」 – JoshuaDavid 2015-11-02 22:27:03

22

@ JimBastard接受的答案看起來有點過時,我看了一下,並且郵件庫lib在7個月以上沒有被觸及,列出了一些錯誤,並且不再在npm中註冊。

nodemailer當然看起來像最好的選擇,但在這個線程的其他答案提供的網址都404'。

nodemailer聲稱支持簡單的插件到Gmail,Hotmail等,也有非常漂亮的文檔。

8

你總是可以使用AlphaMail披露:我是其中的開發者之一)。

只是NPM安裝:

npm install alphamail 

註冊一個帳戶AlphaMail。獲取令牌,然後您可以開始使用AlphaMail服務進行發送。

var alphamail = require('alphamail'); 

var emailService = new alphamail.EmailService() 
    .setServiceUrl('http://api.amail.io/v1/') 
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE'); 

var person = { 
    id: 1234, 
    userName: "jdoe75", 
    name: { 
     first: "John", 
     last: "Doe" 
    }, 
    dateOfBirth: 1975 
}; 

emailService.queue(new alphamail.EmailMessagePayload() 
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc) 
    .setSender(new alphamail.EmailContact("Sender Company Name", "[email protected]")) 
    .setReceiver(new alphamail.EmailContact("John Doe", "[email protected]")) 
    .setBodyObject(person) // Any serializable object 
); 

而在AlphaMail GUI(Dashboard),你就可以編輯你發送的數據模板:

<html> 
    <body> 
     <b>Name:</b> <# payload.name.last " " payload.name.first #><br> 
     <b>Date of Birth:</b> <# payload.dateOfBirth #><br> 

     <# if (payload.id != null) { #> 
      <a href="http://company.com/sign-up">Sign Up Free!</a> 
     <# } else { #> 
      <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a> 
     <# } #> 
    </body> 
</html> 

模板都寫在Comlang,這是一個簡單的模板語言專專爲電子郵件而設計。

+7

Alphamail現在已正式發佈死。非常不幸 - 我正是因爲這篇文章而開始使用它。希望開發人員在下一次合作中一切順利。 – masotime 2014-05-10 14:39:32

2

campaign是一個用於在Node中發送電子郵件的綜合解決方案,它帶有一個非常簡單的API。

您可以像這樣實例化。

var client = require('campaign')({ 
    from: '[email protected]' 
}); 

要發送電子郵件,您可以使用Mandrill,這是免費的,很棒。只需設置你的API密鑰,就像這樣:

process.env.MANDRILL_APIKEY = '<your api key>'; 

(如果你想使用其他供應商發送電子郵件,查看文檔)

然後,當你想發送一封電子郵件,你可以這樣做:

client.sendString('<p>{{something}}</p>', { 
    to: ['[email protected]', '[email protected]'], 
    subject: 'Some Subject', 
    preview': 'The first line', 
    something: 'this is what replaces that thing in the template' 
}, done); 

GitHub回購有pretty extensive documentation

36

完整的代碼發送電子郵件使用nodemailer模塊

var mailer = require("nodemailer"); 

// Use Smtp Protocol to send Email 
var smtpTransport = mailer.createTransport("SMTP",{ 
    service: "Gmail", 
    auth: { 
     user: "[email protected]", 
     pass: "gmail_password" 
    } 
}); 

var mail = { 
    from: "Yashwant Chavan <[email protected]>", 
    to: "[email protected]", 
    subject: "Send Email Using Node.js", 
    text: "Node.js New world for me", 
    html: "<b>Node.js New world for me</b>" 
} 

smtpTransport.sendMail(mail, function(error, response){ 
    if(error){ 
     console.log(error); 
    }else{ 
     console.log("Message sent: " + response.message); 
    } 

    smtpTransport.close(); 
}); 
+2

我發現'Nodemailer' *方式比'node-email-templates'更容易使用。也許這是因爲我只是想發送基本的純文本/基本的html電子郵件,但是我發現'node-email-templates'需要更多的設置,而'Nodemailer'已經運行了2分鐘。 – Jascination 2014-04-09 02:50:04

+1

除了gmail?我們如何配置我們自己的smtp服務器? – 2015-08-07 01:59:30