English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SMTP (Simple Mail Transfer Protocol) ist das einfache Mail-Übertragungsprotokoll. Es ist eine Reihe von Regeln, die das Senden von E-Mails von der Quelle zur Zieladresse regeln. Es kontrolliert die Übertragungsmethode der E-Mails.
Ruby bietet Net::SMTP an, um E-Mails zu senden, und bietet zwei Methoden new und start an:
Neu Die Methode hat zwei Parameter:
Servername Standardmäßig localhost
Portnummer Standardmäßig 25
Start Die Methode hat die folgenden Parameter:
Server - IP-Adresse des SMTP-Servers, Standard ist localhost
port - Portnummer, Standard ist 25
domain - Domain des Absenders der E-Mail, Standard ist ENV["HOSTNAME"]
account - Benutzername, Standard ist nil
password - Benutzerpasswort, Standard ist nil
authtype - Überprüfungsart, Standard ist cram_md5
Der Beispielaufruf der Methoden des SMTP-Objekts ist sendmail, die Parameter sind wie folgt:
Quelle - Eine Zeichenkette oder ein Array oder etwas, das jeder Iterator zu jeder Zeit zurückgibt.
Absender -Eine Zeichenkette, die im E-Mail-Formularfeld appears.
Empfänger - Eine Zeichenkette oder Zeichenfolgen-Array, das die Empfängeradresse darstellt.
Nachfolgend finden Sie ein einfaches Ruby-Skript zum Senden von E-Mails:
require 'net/smtp' message = <<MESSAGE_END Von: Private Person <[email protected]> An: Ein Testbenutzer <[email protected]> Betreff: SMTP E-E-Mail-Test Dies ist ein Test e-mail message. MESSAGE_END Net::SMTP.start('localhost') do |smtp| smtp.send_message message, '[email protected]', '[email protected]' end
In diesem Beispiel haben Sie eine grundlegende E-Mail-Nachricht eingerichtet, beachten Sie die korrekte Formatierung des Titels. Eine E-Mail muss von 'From', 'To' und 'Subject' bestehen, und zwischen dem Textinhalt und den Header-Informationen muss eine Leerzeile sein.
Verwenden Sie Net::SMTP, um sich mit dem lokalen SMTP-Server auf Ihrem Computer zu verbinden, und verwenden Sie die send_message-Methode, um E-Mails zu senden, wobei die Methodenparameter der Absender- und Empfänger-E-Mail sind.
Wenn Sie keinen lokalen SMTP-Server auf Ihrem Computer haben, können Sie Net::SMTP verwenden, um mit einem Remote-SMTP-Server zu kommunizieren. Wenn Sie ein Netzwerk-E-Mail-Dienst (wie Hotmail oder Yahoo Mail) verwenden, stellt Ihr E-Mail-Anbieter Ihnen die Details des Senderservers zur Verfügung:
Net::SMTP.start('mail.your-domain.com')
Dieser Code stellt eine Verbindung zum Host mail.your her-domain.com, Portnummer 25E-Mail-Server, falls Benutzername und Passwort erforderlich sind, lautet der Code wie folgt:
Net::SMTP.start('mail.your-domain.com', 25, 'localhost', 'username', 'password', :plain)
Der obige Beispiel verwendet die spezifischen Benutzername und Passwort, um eine Verbindung zum Host mail.your herzustellen-domain.com, Portnummer 25E-Mail-Server.
Net::SMTP bietet ebenfalls Unterstützung für den Versand von E-Mails im HTML-Format.
Beim Senden von E-Mails können Sie die MIME-Version, den Dokumenttyp und den Zeichensatz einstellen, um E-Mails im HTML-Format zu senden.
Nachfolgender Beispiel wird verwendet, um E-Mails im HTML-Format zu senden:
require 'net/smtp' message = <<MESSAGE_END Von: Private Person <[email protected]> An: Ein Testbenutzer <[email protected]> MIME-Version: 1.0 Content-Typ: text/html Betreff: SMTP E-E-Mail-Test Dies ist eine E-E-Mail-Nachricht, die im HTML-Format gesendet werden soll <b>This is HTML message.</b> <h1>This is headline.</h1> MESSAGE_END Net::SMTP.start('localhost') do |smtp| smtp.send_message message, '[email protected]', '[email protected]' end
Für die Sendung von E-Mails mit gemischtem Inhalt muss Content-Typ multipart/gemischt. Auf diese Weise können Anhangsinhalte in die E-Mail eingefügt werden.
Der Anhang muss vor dem Übertragen mit pack("m") Die Funktion wandelt den Inhalt in base um64 Format.
Nachfolgender Beispiel wird den Anhang senden: /tmp/E-Mail mit test.txt:
require 'net/smtp' filename = "/tmp/test.txt" # Lesen des Dateis und Kodieren als base64Format filecontent = File.read(filename) encodedcontent = [filecontent].pack("m") # base64 marker = "AUNIQUEMARKER" body =<<EOF Dies ist eine Test-E-Mail, um einen Anhang zu senden. EOF # Definition der Hauptkopfinformationen part1 =<<EOF Von: Private Person <[email protected]> An: Ein Testbenutzer <[email protected]> Betreff: Sending Attachement MIME-Version: 1.0 Content-Typ: mehrteilig/gemischt; boundary="#{marker}" --#{marker} EOF # Definition der Nachrichtenaktion part2 =<<EOF Content-Typ: text/plain Content-Transfer-Kodierung:8bit #{body} --#{marker} EOF # Definition des Anhangs part3 =<<EOF Content-Typ: mehrteilig/gemischt; name="#{filename}" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename="#{filename}" #{encodedcontent} --#{marker}-- EOF mailtext = part1 + part2 + part3 # E-Mail senden begin Net::SMTP.start('localhost') do |smtp| smtp.sendmail(mailtext, '[email protected]', ['[email protected]']) end rescue Exception => e print "Exception aufgetreten: " + e end
Hinweis:Sie können mehrere zu sendende Adressen angeben, aber Sie müssen Kommas trennen.