2013-07-15 69 views
1

我使用節點郵件程序,用鏈接發送郵件以單擊該鏈接確認帳戶。我發送郵件到Gmail帳戶,沒關係。當我發送到雅虎郵件,我點擊鏈接,但沒有發生。 這是此碼:節點郵件程序 - 無法單擊雅虎郵件中的鏈接

var nodemailer = require("nodemailer"); 

var smtpTransport = nodemailer.createTransport("SMTP",{ 
    service: "Gmail", 
    auth: { 
     user: "[email protected]", 
     pass: "aaaa" 
    } 
}); 

exports.signupConfirm = function(user){ 
    var mailOptions = { 
     from: "admin <[email protected]>", // sender address 
     to: user.username, // list of receivers 
     subject: "Xác nhận đăng ký tại StockExchange", 
     html: "<b>Xin chào "+user.lastname+" "+user.firstname+"!</b>" 
      +"<br/>Hãy click vào link dưới đây để hoàn thành đăng ký tại StockExchange:" 
      +"<br/><a href='localhost/signupconfirmed/"+user.username+"'>Hoàn thành đăng ký tại StockExchange!</a>" 
      +"<br/>Cảm ơn bạn đã đăng ký tại StockExchange!" 
    } 

    smtpTransport.sendMail(mailOptions, function(error, response){ 
     if(error){ 
      console.log(error); 
     }else{ 
      console.log("Message sent: " + response.message); 
     } 
     //smtpTransport.close(); // shut down the connection pool, no more messages 
    }); 
} 

任何人都可以幫到我。謝謝。

回答

3

從Nodemailer我不能在雅虎或Thunderbird打開鏈接時發送,但是當我建立鏈接的文本鏈接的變量,然後叫上這個變量的toString(),它的工作原理:

var textLink = "http://" + req.headers.host + "/signup?token=" + data.hashedEmail; 
    var mailOptions = { 
    from: auth_email, // sender address 
    to: data.email, // list of receivers 
    subject: "Signup Confirmation ✔", // Subject line 
    generateTextFromHTML: true, 
    html: '<b>Signup Confirmation ✔</b><br />' 
     + 'Your email account is : ' + data.email + '<br />' 
     + '<a href=\"'+ textLink.toString() + '\">Click here to activate your account.</a>' 
     + '<br />' 
     + '<br /> Text link: ' + textLink 

我還包括電子郵件底部的URL的純文本版本,以防用戶無法打開超鏈接。

1

有些電子郵件服務不允許指向「本地主機」的鏈接。嘗試使用不同的網域(例如google.com),看看它是否有效。