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.
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.
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.
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.
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 .)
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.
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.
Hast du das Pony-Juwel ausprobiert? Es bietet eine wirklich einfache Schnittstelle zu sendmail
, die bereits auf Ihrem Mac installiert sein sollte.
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.
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 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.