Latest web development tutorials

Ruby-Senden von Mail - SMTP

SMTP (Simple Mail Transfer Protocol), das Simple Mail Transfer Protocol, das ist ein Satz von Regeln für die Nachrichten von der Quelle zum Ziel zu übertragen, der sie den Weg, um die Buchstaben des Transits zu kontrollieren hat.

Rubin bietet eine Net :: SMTP-Mail zu senden, und bietet zwei Methoden und Neubeginn:

neue Methode hat zwei Parameter:

  • DerStandardservernameist localhost
  • Die Standard -Portnummerist 25

Start - Methode hat die folgenden Parameter:

  • Server - SMTP- Server - IP ist der Standardlocalhost
  • Port -Die Portnummer, ist die Standard - 25
  • Domain -die Mail - Absender - Domäne, Standard ENV [ "hostname"]
  • Konto -der Benutzername ist der Standard nil
  • Passwort -das Kennwort des Benutzers, der Standardwert ist gleich Null
  • authtype -die Art der Authentifizierung, die Standardeinstellung istcram_md5

SMTP Objektinstanziierung Methode ruft Sendmail, die folgenden Parameter:

  • Quelle -Ein String oder ein Array von jeder Iteration oder jederzeit alles in einer Rückkehr.
  • Absender -eine Zeichenfolge , die in Form von E - Mail - Feld angezeigt wird .
  • Empfänger -ein String oder ein Array von Strings die Adresse des Empfängers darstellt.

Beispiele

Im Folgenden wird ein einfaches Ruby-Skript Mail senden:

require 'net/smtp'

message = <<MESSAGE_END
From: Private Person <[email protected]>
To: A Test User <[email protected]>
Subject: SMTP e-mail test

This is a test e-mail message.
MESSAGE_END

Net::SMTP.start('localhost') do |smtp|
  smtp.send_message message, '[email protected]', 
                             '[email protected]'
end

In dem obigen Beispiel, Sie haben eine grundlegende E-Mail-Nachricht einrichten, achten Sie auf die korrekte Titel Format. Eine E-Mail an sein Von, An und Betreff, zwischen Text und Header-Informationen eine Leerzeile erfordert.

zum Senden von Nachrichten mit send_message Prozess, Prozessparameter für den Absender der Nachricht beim Empfänger Mail-Nutzung Net :: SMTP an den SMTP-Server auf dem lokalen Rechner zu verbinden.

Wenn Sie nicht auf dem Computer des SMTP-Server ausgeführt werden, können Sie die Net :: SMTP-Kommunikation mit Remote-SMTP-Server verwenden. Wenn Sie Webmail-Dienste (wie Hotmail oder Yahoo Mail) zu verwenden, wird Ihre E-Mail-Provider bieten Einzelheiten der Absender-Server für Sie:

Net::SMTP.start('mail.your-domain.com')

Der obige Code verbinden Host mail.your-domain.com, die Portnummer 25 des Mail-Servers, wenn Sie den Benutzernamen und das Passwort zu füllen müssen, wird der Code wie folgt:

Net::SMTP.start('mail.your-domain.com', 
                25, 
                'localhost', 
                'username', 'password', :plain)

Die obigen Beispiele verwenden, um einen Benutzernamen und ein Passwort für den angegebenen Host mail.your-domain.com, die Portnummer 25 des E-Mail-Server zu verbinden.


Senden Sie HTML-E-Mail mit Rubin

Net :: SMTP bietet auch Unterstützung für Nachrichten im HTML-Format zu senden.

Wenn E-Mail-Versand können Sie die MIME-Version, Dokumenttyp, Zeichensatz einstellen, dass Nachrichten im HTML-Format zu senden.

Beispiele

Die folgenden Beispiele werden verwendet, um Nachrichten im HTML-Format zu senden:

require 'net/smtp'

message = <<MESSAGE_END
From: Private Person <[email protected]>
To: A Test User <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test

This is an e-mail message to be sent in HTML format

<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

Senden Mails mit Anhängen

Wenn Sie eine gemischte Inhalt von E-Mail senden möchten, müssen Sie den Content-type einstellen multipart / mixed ist. So können Sie eine Anlage in dem Nachrichteninhalt hinzufügen.

Zubehör vor der Übertragung erfordert den Einsatz Pack ( "m") konvertiert den Inhalt in base64 - Format.

Beispiele

Das folgende Beispiel soll Anhänge als /tmp/test.txt E-Mail an:

require 'net/smtp'

filename = "/tmp/test.txt"
# 读取文件并编码为base64格式
filecontent = File.read(filename)
encodedcontent = [filecontent].pack("m")   # base64

marker = "AUNIQUEMARKER"

body =<<EOF
This is a test email to send an attachement.
EOF

# 定义主要的头部信息
part1 =<<EOF
From: Private Person <[email protected]>
To: A Test User <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=#{marker}
--#{marker}
EOF

# 定义消息动作
part2 =<<EOF
Content-Type: text/plain
Content-Transfer-Encoding:8bit

#{body}
--#{marker}
EOF

# 定义附件部分
part3 =<<EOF
Content-Type: multipart/mixed; name=\"#{filename}\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename="#{filename}"

#{encodedcontent}
--#{marker}--
EOF

mailtext = part1 + part2 + part3

# 发送邮件
begin 
  Net::SMTP.start('localhost') do |smtp|
     smtp.sendmail(mailtext, '[email protected]',
                          ['[email protected]'])
  end
rescue Exception => e  
  print "Exception occured: " + e  
end  

Hinweis: Sie die Adresse einer Vielzahl von Übertragungs angeben können, sondern erfordert die Verwendung von Kommas.