2016-05-30 4 views
6

Ich habe Rails App auf Heroku. Es hat eine benutzerdefinierte Domain, und ich habe versucht, E-Mail-Versand über Mailgun einzurichten. Ich habe Mailgun als Add-On über Heroku installiert und bin durch die Schritte gegangen, die Mailgun gibt, um meine benutzerdefinierte Domain zu "verifizieren". Wenn ich Mailguns "Check DNS Records Now" (DNS-Einträge jetzt prüfen) anwende, wird alles grün angezeigt und der Status ist "Aktiv". Ich kann sogar Nachrichten von meiner benutzerdefinierten Domäne mit dem curl Anruf senden, den sie zur Verfügung stellen. Allerdings, wenn ich versuche, eine E-Mail von meiner Rails-Anwendung senden ActionMailer ich mit bekommen: Net::SMTPFatalError (554 Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in domain settings.Bestätigte E-Mail nicht über Heroku/Mailgun senden

Warum denkt, es mir eine „Sandbox Sub-Domain“ verwendet werden? Hier ist, was ich habe in environments/production.rb:

# Mailgun 
    ActionMailer::Base.smtp_settings = {          
    port: ENV['MAILGUN_SMTP_PORT'],          
    address: ENV['MAILGUN_SMTP_SERVER'],         
    user_name: ENV['MAILGUN_SMTP_LOGIN'], 
    password: ENV['MAILGUN_SMTP_PASSWORD'],        
    domain: 'my-custom-domain.com',            
    authentication: :plain,            
    } 
    ActionMailer::Base.delivery_method = :smtp        
    # Devise recoverable  
    config.action_mailer.default_url_options = { host: 'my-custom-domain.com' } 

Für die Entwicklung Ich verwende Google Mail, damit ich weiß es die richtige Konfigurationsdatei liest. Und alle Umgebungen sind richtig eingestellt. Der from ist auch richtig eingestellt, ich sehe es meine Logs ([email protected]) Was habe ich vermisst? Gibt es etwas, das sich noch weiter verbreiten könnte, selbst wenn der Status aktiv ist?

Danke!

+1

Haben Sie die Empfänger Ihrer E-Mail zur Liste "Autorisierte Empfänger" hinzugefügt? – Brian

+0

Ich hatte genau das gleiche Problem - ich tat, was Sie unten erwähnen, änderte die heroku env vars, um auf die neuen Anmeldeinformationen zu zeigen, aber immer noch wird die Mail nicht gesendet. Seltsamerweise funktioniert die "resend confirmation instructions" -Kette gut. Irgendeine Idee, wie man das repariert? – Anand

Antwort

9

Also das Problem stellte sich heraus, dass, als ich meine benutzerdefinierte Domäne verifiziert hat, eine zweite Domäne unter meinem Heroku/Mailgun-Konto erstellt. Ich hatte noch die Zugangsdaten aus der xxx.mailgun.org (Sandbox) Domain in meinem Heroku env vars. Sobald ich sie mit den Anmeldeinformationen von meiner benutzerdefinierten Domäne ersetzt habe, hat alles funktioniert. (Da Heroku den ersten Satz von env vars gesetzt hatte, nahm ich törichterweise an, dass das neue Set automatisch eingefügt würde.) Seufz ...

Danke für Ihre Hilfe lyen.

+8

Mailgun/Heroku sollte wirklich bessere Anweisungen geben! – user3763682

+0

Kann dies mit Node.js anstelle von Ruby hinzugefügt werden? – c0d3Junk13

3

Haben Sie die Empfänger Ihrer E-Mail zur Liste "Autorisierte Empfänger" unter https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org hinzugefügt?

enter image description here

Seien Sie sicher, dass eine echte E-Mail-Adresse hinzufügen, die E-Mails empfangen kann.

Dies liegt daran, mailgun wäre eine Bestätigungs-E-Mail mit der Bitte schicken, wenn der Besitzer der E-Mail-Adresse wirklich E-Mails von mailgun erhalten will.

+1

Ich möchte Mailgun verwenden, um Produktionsnachrichten zu senden. Ich möchte nicht im Sandbox-Modus sein. Wie komme ich da raus? Ich konnte eine Nachricht per Curl senden, ohne diese Empfänger zu "autorisieren". Wie mache ich das? – lostphilosopher

6

Um hinzuzufügen zu lostphilosopher Antwort, löste ich vor kurzem diese MailGun benutzerdefinierte Domain Problem selbst.

Hier ist, was für mich gearbeitet:

Situation: Nach dem erfolgreich eine eigene Domain zu Mailgun hinzufügen, meine E-Mails senden/empfangen aufgehört zu arbeiten

Fehler: Nach dem benutzerdefinierten Domain Hinzufügen und Überprüfen des DNS mit Mailgun erhielt ich Fehlermeldungen wie:

Net::SMTPFatalError: 554 Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in Account Settings.

Lösung: Stellen Sie fest, dass Heroku Konfigurationsvariablen NICHT automatisch für Sie aktualisiert. Sie müssen sie manuell mit Werten für Ihre neue Domäne aktualisieren.

  1. In MailGun - Finden Sie Ihre neue MailGun Domain-Einstellungen unter unter https://mailgun.com/app/domains
  2. In Heroku - goto: Heroku> App> Einstellungen> Reveal Config Vars
  3. In Heroku - Update die folgenden Konfigurations Vars
    • MAILGUN_DOMAIN
    • MAILGUN_SMTP_LOGIN
    • MAILGUN_SMTP_PASSWORD

Update Heroku Config Vars With New MailGun Domain Settings

Und ja, ich stimme zu - MailGun docs nicht die gründlichste sind. Vor allem, wenn es darum geht, dein Setup zu testen.

+0

was geht in mailgun_domain –