E-Mail mit Ruby senden, ohne dass der SMTP-Server installiert ist / läuft?

8

Unter Mac kann ich mit dem Befehl mail E-Mails von der Befehlszeile senden, aber auf meinem MacBookPro habe ich definitiv keinen SMTP-Server installiert.

So ist es möglich, E-Mails mit Ruby ohne einen SMTP-Server zu senden? Die Geschwindigkeit interessiert mich nicht, ich möchte nur eine Möglichkeit, E-Mails ohne zusätzliche Software zu senden.

    
Howard 23.07.2013, 14:03
quelle

7 Antworten

5

Sie könnten einfach den Befehl mail innerhalb Ihres Ruby-Codes aufrufen. Benutze system oder Backticks oder etwas komplizierteres wie open3 , um mit Systembefehlen zu interagieren ... Hier ist ein schöner Überblick über die verschiedenen Methoden: Ссылка

    
severin 28.07.2013 15:57
quelle
4

Über mail und sendmail

Ich weiß nicht viel über mail , aber Ergebnisse von einer Schnellsuche auf Google scheinen darauf hinzudeuten, dass Postfix verwendet wird. Dies ist der Standard-SMTP-Server, der auf Macs installiert ist. Mit anderen Worten, Sie haben einen SMTP-Server auf Ihrem Macbook Pro installiert und führen ihn aus.

Über Ruby

  

So ist es möglich, E-Mails mit Ruby ohne einen SMTP-Server zu senden?

Ja und Nein. Sie müssen keinen SMTP-Server auf demselben Computer wie Ihren Ruby-Prozess ausführen. In der Tat müssen Sie nicht einmal Ihren eigenen SMTP-Server ausführen. Sie benötigen jedoch einen SMTP-Server irgendwo , um Ihre E-Mail zu senden.

Über SMTP

Dieser Artikel über howstuffworks gibt eine gute Erklärung, was SMTP tut. Im Wesentlichen benötigen Sie irgendwo einen SMTP-Server, der Ihre E-Mails akzeptiert, mit anderen SMTP-Servern kommuniziert und Ihre E-Mails zur Zustellung weiterleitet. Mit Ruby können Sie Net :: SMTP konfigurieren, um eine Verbindung herzustellen an einen SMTP-Server Ihrer Wahl.

Über was Sie versuchen zu tun

Wenn Sie ein Skript schreiben und ausführen möchten, das eine kleine Anzahl von E-Mail-Nachrichten liefert, erstellen Sie ein gefälschtes E-Mail-Konto in Google Mail / Live und verwenden Sie deren SMTP-Server zum Senden von E-Mails.

Wenn Sie eine App erstellen und starten möchten, die E-Mails an Ihre Nutzer sendet, verwenden Sie Mandrill , MailGun oder SendGrid. Mandrill hat eine kostenlose Stufe für Sie, um zu beginnen.

Ich empfehle, für die meisten Anwendungsfälle keinen eigenen SMTP-Server zu verwenden, da Ihre E-Mails wahrscheinlich als Spam markiert werden. (Comcast könnte auch denken, dass Sie Malware in Ihrem Netzwerk haben.) Professionelle Dienste wie Mandrill helfen Ihnen bei der Einrichtung von SPF- und DKIM-Datensätze , um Ihre E-Mails zu authentifizieren und die Sende-Reputation zu verbessern.

(Wenn Sie E-Mails nur im Entwicklermodus testen möchten, verwenden Sie MailCatcher .)

Fazit

Melden Sie sich für ein Konto Mandrill an und verwenden Sie dann Net::SMTP in Ruby, um eine Verbindung zu ihren SMTP-Servern herzustellen. Keine zusätzliche Software ist erforderlich.

    
James Lim 31.07.2013 21:40
quelle
2

Wenn der Befehl mail funktioniert, können Sie E-Mails von innen senden Rubin. Und wenn dein mail -Befehl bereits auf deinem Mac funktioniert, dann Sie haben auch schon einen SMTP-Server auf Ihrem Mac, seit dem Standardmäßig verwendet es postfix , das installiert wird. Der Befehl mail verwendet standardmäßig /usr/sbin/sendmail , was in diesem Fall ein ist Schnittstelle zu postfix . (Probieren Sie man sendmail aus dem Terminal aus.)

Nun, das heißt, Sie werden wahrscheinlich so etwas erleben, wenn Sie versuchen, Net :: SMTP lokal zu verwenden:

%Vor%

Dies bedeutet, dass Sie etwas tun müssen, um Ihrem Mac zu sagen, dass es möglich ist akzeptieren Verbindungen an Port 25. Eine andere Alternative ist, das zu verwenden sendmail Programm als eine Transport - Zugriffsmethode, die möglicherweise die sein bessere Option. Der Zugang zum Port 25 ist ausgeschaltet, so dass niemand sonst kann deinen Mac als Mail Relay benutzen. Durch die sendmail gehen müssen Befehl bedeutet, dass nur Programme auf Ihrem Mac Mail senden können (gehen Sie Figur).

Mein Vorschlag wäre hier, das mail gem (oder pony wenn Sie bevorzugen) und konfigurieren Sie es, um sendmail zu verwenden. Aus dem mail README Datei:

  

Das Senden über sendmail kann folgendermaßen erfolgen:

%Vor%

Wenn Sie ActionMailer verwenden, können Sie es entsprechend konfigurieren sendmail ebenfalls.

    
tamouse 03.08.2013 14:14
quelle
2

Hast du das Pony-Juwel ausprobiert? Es bietet eine wirklich einfache Schnittstelle zu sendmail , die bereits auf Ihrem Mac installiert sein sollte.

    
skinnyfit 03.08.2013 18:02
quelle
1

Möchten Sie E-Mails vom CLI schreiben und senden?

Es gibt eine Reihe von Mailer-Edelsteinen, einschließlich E-Mails . Sie könnten wahrscheinlich auch direkt mit Rubys Net :: SMTP spielen und etwas zum Laufen bringen, je nachdem, was Sie tun wollen.

    
max 23.07.2013 14:14
quelle
1

Sie müssen keinen SMTP-Server haben, Sie müssen nur wissen, wo Sie sich befinden können.

Siehe Net :: SMTP . Es ist Teil von Ruby.

    
the Tin Man 23.07.2013 15:06
quelle
0

Wenn Sie den Befehl mail oder /usr/sbin/sendmail verwendet haben und Ihre Mail erfolgreich zugestellt wurde, dann wurde ein MTA (Mail / Message Transfer Agent zB Postfix, Sendmail oder was auch immer) auf Ihrem Rechner ausgeführt.

Wenn Sie den Befehl mail verwenden, um eine E-Mail an [email protected] zu senden, sendet Ihr Befehl mail die E-Mail an den lokalen SMTP-Server.

(lokaler) SMTP-Server führt die folgenden Aufgaben aus.

  • Der SMTP-Server (MTA) führt MX-Lookup für gmail.com durch
  • Verbinden Sie sich mit Port 25 des MX-Servers und übergeben Sie die Mail, indem Sie die SMTP-Befehle (HELO, MAIL FROM, RCPT TO, DATA) sprechen

Der Mx-Server wird die Mail an das entsprechende Postfach (guser) senden.

Die obigen Antworten schlagen vor, dass Sie Net :: SMTP verwenden, wo Sie eine Verbindung zu einem SMTP-Server herstellen und die E-Mail an diesen SMTP-Server übergeben, der die obigen Aufgaben (des lokalen SMTP-Servers) erneut ausführt .

Um E-Mails zu senden, benötigen Sie einen SMTP-Server. oder Sie müssen sich selbst codieren / eine Bibliothek verwenden, um eine MX-Suche durchzuführen und die Mail an den MX-Server zu übergeben, indem Sie SMTP-Befehle gemäß RFC 2821 sprechen.

    
clement 03.08.2013 22:54
quelle

Tags und Links