2017-02-05 1 views
1

J'essaie de configurer mailgun pour une utilisation avec l'application parse-serveur sur Heroku.Configuration mailgun avec parse-server sur Heroku

L'API recommandée est

https://github.com/ParsePlatform/parse-server-simple-mailgun-adapter

Mais des instructions sur la façon d'atteindre effectivement ce sont inexistants.

EDIT ----------- ---------

instructions et serveur Suivi pousse à Heroku. Bien que je ne reçois toujours pas de courriels. Im juste en utilisant mailgun sandbox et ont autorisé et activé un destinataire.

Je ne suis pas sûr de spécifier le chemin d'accès aux modèles ou:

fromAddress: process.env.EMAIL_FROM 

Cela n'a pas été fourni par mailgun donc je viens d'entrer [email protected]

Cette évidence isnt valide?

code index.js:

var express = require('express'); 
var ParseServer = require('parse-server').ParseServer; 
var S3Adapter = require('parse-server').S3Adapter; 
var path = require('path'); 

const resolve = require('path').resolve; 

var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI; 

if (!databaseUri) { 
    console.log('DATABASE_URI not specified, falling back to localhost.'); 
} 


var api = new ParseServer({ 
    //**** General Settings ****// 

    databaseURI: databaseUri || 'mongodb://localhost:27017/dev', 
    cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js', 
    serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse', // Don't forget to change to https if needed 
    maxUploadSize: '500mb', 

    //**** Security Settings ****// 
    // allowClientClassCreation: process.env.CLIENT_CLASS_CREATION || false, 
    appId: process.env.APP_ID || 'myAppId', 
    masterKey: process.env.MASTER_KEY || 'myMasterKey', //Add your master key here. Keep it secret! 

    //**** Live Query ****// 
    // liveQuery: { 
    // classNames: ["TestObject", "Place", "Team", "Player", "ChatMessage"] // List of classes to support for query subscriptions 
    // }, 


     //**** File Storage ****// 
     filesAdapter: new S3Adapter({ 
      accessKey: process.env.S3_ACCESS_KEY || '', 
      secretKey: process.env.S3_SECRET_KEY || '', 
      bucket: process.env.S3_BUCKET || '', 
      directAccess: true 
    }), 

    //**** Email Verification ****// 
    /* Enable email verification */ 
    // verifyUserEmails: true, 
    /* The public URL of your app */ 
    // This will appear in the link that is used to verify email addresses and reset passwords. 


    publicServerURL: process.env.SERVER_URL || '', 
    appName: process.env.APP_NAME || '', 

    emailAdapter: { 
     module: 'parse-server-mailgun', 
     options: { 
      fromAddress: process.env.EMAIL_FROM || '', 
      domain: process.env.MAILGUN_DOMAIN || '', 
      apiKey: process.env.MAILGUN_API_KEY || '', 

      templates: { 
       passwordResetEmail: { 
       subject: 'Reset your password', 
       pathPlainText: resolve(__dirname, 'https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/password_reset_email.txt'), 
       pathHtml: resolve(__dirname, 'https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/password_reset_email.html'), 
       callback: (user) => { return { firstName: user.get('firstName') }} 
       // Now you can use {{firstName}} in your templates 
       }, 
       verificationEmail: { 
       subject: 'Confirm your account', 
       pathPlainText: resolve(__dirname, 'https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/verification_email.txt'), 
       pathHtml: resolve(__dirname, 'https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/verification_email.html'), 
       callback: (user) => { return { firstName: user.get('firstName') }} 
       // Now you can use {{firstName}} in your templates 
       } 
      } 
     } 
    } 

}); 

Mon code rapide à envoyer réinitialisation de mot de passe indique que le message a été envoyé, donc je suppose que tout Cliff m'a dit est correct et le côté serveur est configuré ok , probablement juste quelque chose de stupide que j'ai fait avec les variables.

PFUser.requestPasswordResetForEmail(inBackground: emailAddress!) { (success, error) in 
     if error != nil { 
      // display error message 
      let userMessage: String = error!.localizedDescription 
      GeneralFunctions.createAlert(errorTitle: "Oops...", errorMessage: userMessage, className: self) 
     } else { 
      // display success message 
      let userMessage: String = "An new password was sent to \(emailAddress!)" 
      GeneralFunctions.createAlert(errorTitle: "Hooray...", errorMessage: userMessage, className: self) 
     } 
    } 

----------- ---------- EDIT

journal verbeux après avoir essayé le mot de passe de réinitialisation

[email protected] 
2017-02-06T00:44:25.788619+00:00 app[web.1]: [36mverbose[39m: RESPONSE from [POST] /parse/requestPasswordReset: { 
2017-02-06T00:44:25.788623+00:00 app[web.1]: "response": {} 
2017-02-06T00:44:25.788625+00:00 app[web.1]: } 
2017-02-06T00:44:25.797455+00:00 app[web.1]: { Error: ENOENT: no such file or directory, open '/app/https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/password_reset_email.txt' 
2017-02-06T00:44:25.797458+00:00 app[web.1]: errno: -2, 
2017-02-06T00:44:25.797459+00:00 app[web.1]: code: 'ENOENT', 
2017-02-06T00:44:25.797459+00:00 app[web.1]: syscall: 'open', 
2017-02-06T00:44:25.797462+00:00 app[web.1]: path: '/app/https:/myparseserveronheroku.herokuapp.com/node_modules/parse-server-mailgun-adapter/test/email-templates/password_reset_email.txt' } 
2017-02-06T00:44:25.792191+00:00 heroku[router]: at=info method=POST path="/parse/requestPasswordReset" host=myparseserveronheroku.herokuapp.com request_id=666ff3e0-db4a-4e76-b7b5-6353edc7e15a fwd="111.111.111.11" dyno=web.1 connect=0ms service=81ms status=200 bytes=483 

Alors ressemble vraiment à c'est essayer d'envoyer à partir d'un modèle qui n'existe pas. Je ne sais pas comment spécifier le chemin ici, j'avais pensé que tous ces répertoires, y compris node_modules/parse-serveur-mailgun-adaptateur/test/email-modèles ont été poussés à Heroku.

Répondre

1

Première:

npm install --save parse-server-mailgun 

Vous devez ensuite déposer dans votre index.js vous pouvez le configurer comme suit dans le initialize:

publicServerURL: 'http://MY_HEROKU_APP.herokuapp.com/parse', 
appName: 'MY_APP', 
emailAdapter: { 
    module: 'parse-server-mailgun', 
    options: { 
     fromAddress: '[email protected]', 
     domain: 'example.com', 
     apiKey: 'key-XXXXXX', 
    } 
} 

L'adaptateur par défaut Mailgun qui vient avec le Parse Server, vous besoin de définir un fromAddres, et le domaine et apiKey fourni par Mailgun. En outre, vous devez également configurer les modèles que vous souhaitez utiliser. Vous devez fournir au moins une version en texte brut pour chaque modèle. Les versions html sont facultatives.

verifyUserEmails: true, 
    emailAdapter: { 
    module: 'parse-server-mailgun', 
    options: { 
     // The address that your emails come from 
     fromAddress: 'YourApp <[email protected]>', 
     // Your domain from mailgun.com 
     domain: 'example.com', 
     // Your API key from mailgun.com 
     apiKey: 'key-mykey', 
     // The template section 
     templates: { 
     passwordResetEmail: { 
      subject: 'Reset your password', 
      pathPlainText: resolve(__dirname, 'path/to/templates/password_reset_email.txt'), 
      pathHtml: resolve(__dirname, 'path/to/templates/password_reset_email.html'), 
      callback: (user) => { return { firstName: user.get('firstName') }} 
      // Now you can use {{firstName}} in your templates 
     }, 
     verificationEmail: { 
      subject: 'Confirm your account', 
      pathPlainText: resolve(__dirname, 'path/to/templates/verification_email.txt'), 
      pathHtml: resolve(__dirname, 'path/to/templates/verification_email.html'), 
      callback: (user) => { return { firstName: user.get('firstName') }} 
      // Now you can use {{firstName}} in your templates 
     }, 
     customEmailAlert: { 
      subject: 'Urgent notification!', 
      pathPlainText: resolve(__dirname, 'path/to/templates/custom_alert.txt'), 
      pathHtml: resolve(__dirname, 'path/to/templates/custom_alert.html'), 
     } 
     } 
    } 

Référence à l'ensemble NPM: https://www.npmjs.com/package/parse-server-mailgun

+0

Merci. Je vous ferai savoir comment je m'entends avec ça! – Pippo

+0

Dites allaient juste utiliser les modèles fournis, comment spécifiez-vous le chemin d'accès à ceux-ci?/parse-server/node_modules/parse-server-mailgun/test – Pippo

+0

Votre configuration est correcte, donc c'est bien. Le chemin est incorrect. __dirname est le nom du répertoire du module en cours. Alors regardez et voyez dans quel chemin votre index.js se trouve, alors vous construisez votre chemin à partir de là.Pas de https ou de noms de domaine. Les vrais chemins – Cliffordwh