Frage

Ich versuche, E-Mail mit einem Ruby-Skript zu senden, aber mein Proof of Concept funktioniert nicht. Ich kann an den Mail-Server telnet und E-Mail auf diese Weise senden, aber das Skript bewirkt, dass der Mail-Server einen Fehler erhöhen: 501 5.5.4 Invalid Address

#!/usr/bin/ruby

require 'net/smtp'

def send_email(to, subject = "", body = "")
    from = "my@email.com"
    body= "From: #{from}\r\nTo: #{to}\r\nSubject: #{subject}\r\n\r\n#{body}\r\n"

    Net::SMTP.start('192.168.10.213', 25, '192.168.0.218') do |smtp|
        smtp.send_message body, from, to
    end
end

send_email "my@email.com", "test", "blah blah blah"

In meinem eigentlichen Skript ist my@email.com eine gültige E-Mail. 192.168.10.213 ist der Mail-Server und 192.168.0.218 ist meine lokale IP. Beachten Sie, dass ich mit Windows XP, und der Mail-Server ist ein Exchange-Server.

Ich verstehe nicht, warum telnet mit den gleichen Werten funktioniert, aber dieses Skript stellt sich die ungültige Adresse Fehler.

Kann mir jemand helfen?

Bearbeiten : Der obige Code funktioniert nun gut, ich ursprünglich links die Kommas in dem letzten Methodenaufruf aus. Ich fühle mich wie ein Idiot.

War es hilfreich?

Lösung 3

Können Sie es glauben? Ich fühle mich wie ein Idiot, ich bin nur ein Komma in dem Methodenaufruf fehlt ...

send_email "my@email.com", "test", "blah blah blah"

Es ist mir peinlich.

Wie auch immer, der obige Code funktioniert großartig, wenn jemand interessiert ist. Nur nicht die Kommas auslassen wie ich.

Andere Tipps

Stellen Sie sicher, dass Ihre tatsächliche E-Mail-Adresse nicht ungültige Zeichen enthält. Zum Beispiel finden Sie unter diese Frage .

würde ich Aktion Mailer empfehlen für Mails mit Rubin senden. Sehen Sie einen Ausschnitt hier .

Es ist ein Fehler im Code. Ein böswilliger Benutzer könnte mehr Header in Ihre E-Mail einfügen, indem Sie Zeilenumbrüche in der Betreffzeile verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top