2016-06-02 5 views
0

Hey ich mailgun zu versuchen, E-Mails zu senden, damit ich dieses Skript bin mit:Beispiel für den Domain-Namen für mailgun be für nodejs?

var Mailgun = require('mailgun-js'); 

//get requests 
expressApp 
    .get("/", function routeHandler(req, res) { 
     res.sendFile(path.join(__dirname, "../client/index.html")); 

     var api_key = 'key-00000000000000000000'; 
     var domain = "https://api.mailgun.net/v3/mydomain.com"; //I think the error must be here 
     var mailgun = new Mailgun({apiKey: api_key, domain: domain}); 

     var data = { 
      from: "[email protected]", //I tried also with [email protected] which was in the example 

      to: '[email protected]', 
      subject: 'Hello', 
      text: 'Testing some Mailgun awesomness!' 
     }; 

     mailgun.messages().send(data, function (err, body) { 
      if (err) { 
       console.log("error ", err); 
      } 
      console.log(body); 
     }); 
    }) 

Ich glaube, ich in den Domain-Namen einen Fehler haben, aber ich bin einfügen es genau so, wie es in mailgun erscheint Konsolen-Panel in ihrer Website: enter image description here

Kann mir jemand ein Beispiel dafür, wie der Domain-Name aussehen sollte?

Dies ist der Fehler Ich erhalte:

error { [Error: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>404 Not Found</title> 
<h1>Not Found</h1> 
<p>The requested URL was not found on the server.</p><p>If you entered the URL manually please check your spelling and try again.</p> 
] statusCode: 404 } 
undefined 

Antwort

1

Das ist für mich gearbeitet:

var api_key = 'key-################'; 
var domain = 'mydomain.com'; 
var mailgun = require('mailgun-js')({apiKey: api_key, domain: domain}); 

var data = { 
    from: 'Excited User <[email protected]>', 
    to: '[email protected]', 
    subject: 'Hello', 
    text: 'Testing some Mailgun awesomness!' 
}; 
mailgun.messages().send(data, function (error, body) { 
    console.log(body); 
}); 
2

Meine Arbeits Beispiel setzt die Mailgun Domäne "sandbox-blahblahblah.mailgun.org"

in dieser Dokumentation Werfen Sie einen Blick: https://www.npmjs.com/package/mailgun-js - Ich glaube nicht, Sie Einstellung sollte die Domain an ihren API-Root, aber eher an die Domain, von der aus Sie über Mailgun senden möchten.

Bearbeiten mit Codebeispiel:

exportiere ich folgendes aus meiner Haupt-Konfigurationsdatei (main.js):

// Configuring Mailgun API for sending transactional email 
    'mailgun_priv_key': 'key-XXXXXXXXXXXXXX', 
    // Configuring Mailgun domain for sending transactional email 
    'mailgun_domain': 'sandboxXXXXXXXXXXXXXX.mailgun.org' 

In meiner Mailgun Konfigurationsdatei (mailgun.js), habe ich die folgenden :

const config = require('./main'); 
const mailgun = require('mailgun-js')({ apiKey: config.mailgun_priv_key, 
domain: config.mailgun_domain }); 

// Create and export function to send emails through Mailgun API 
exports.sendEmail = function(recipient, message) { 
    const data = { 
     from: 'My Name <[email protected]>', 
     to: recipient, 
     subject: message.subject, 
     text: message.text 
    }; 

    mailgun.messages().send(data, function(error, body) { 
     console.log(body); 
    }); 
    } 

von meinem Controller Dann kann ich meine Mailgun Config importieren:

const mailgun = require('../config/mailgun'); 

Und ich kann eine E-Mail senden:

const message = { 
      subject: 'Subject here', 
      text: 'Some text' 
      } 

      // Otherwise, send user email via Mailgun 
      mailgun.sendEmail(user.email, message); 

Hier ist ein Repo mit einigen Dingen, die ich brauche zu beheben, aber die Mailgun Integration funktioniert: https://github.com/joshuaslate/mern-starter/tree/master/server/config

+0

kannst du dein komplettes funktionierendes Beispiel posten, ich bin mir nicht sicher, was ich hier machen soll – Jeka

+0

@Jeka, ich habe meine Antwort mit meinem Arbeitscode bearbeitet. Bitte lassen Sie mich wissen, wenn Sie weitere Probleme haben. –