[IronPython] unexpected token

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
univeda
User
Beiträge: 2
Registriert: Montag 6. Juli 2009, 23:45

Hallo Python-Freunde!

Ich mache meine ersten Gehversuche in IronPython und habe dazu leider kein spezielles IronPython-Forum finden können.

Ich versuche über System.Net.Mail eine E-Mail in IronPython zu versenden, dies scheitert aber scheinbar an grundsätzlichem:

Code: Alles auswählen

import sys
sys.path.append("c:\entwicklung\python26\lib")

import clr
clr.AddReference('System.Net.Mail')

from System.Net.Mail import *

MailMessage mail = new MailMessage()
Beim Erstellen wird folgender Fehler gemeldet:

Code: Alles auswählen

unexpected token 'mail' (16) - F:\Entwicklung\IPY\cmdtest\cmdtest\Program.py:9,13
Ich verwende IronPython 2.6 Beta mit SharpDevelop 3.0. Der gleiche Fehler tritt aber auch auf, wenn ich direkt in der IronPython-Console versuche eine neue MailMessage zu erzeugen.

Kennt sich jemand in diesem Forum mit IronPython aus und kann einem IronPython-Anfänger auf die Sprünge helfen?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich kenne mich nicht mit IronPython aus, aber ich gehe stark davon aus, dass es immernoch python ist, d.h. Zeile 9 so lauten sollte:

Code: Alles auswählen

mail = MailMessage()
Im Uebrigen: *-Importe sind meist eine schlechte Idee, ``import name as other_name`` und ``from name import other_name`` sind in den meisten Faellen zu bevorzugen - eigtl immer, wenn man nicht im Interpreter ist.
univeda
User
Beiträge: 2
Registriert: Montag 6. Juli 2009, 23:45

Da hast du recht.

Ich habe das jetzt so realisiert:

Code: Alles auswählen

from System.Net.Mail import *

mail = MailMessage()

host = "ip_des_mailservers"
port = 25
sender = "absender@domain.local"
recipient = "empfänger@domain.local"
subject = "Testmail"
body = "Dies ist ein Test mit IronPython"

mail.To.Add(recipient)
mail.From = MailAddress(sender)
mail.Subject = subject
mail.Body = body

client = SmtpClient(host, port)

client.Send(mail)
So klappts. Danke!
lunar

Nur um das nochmal zu wiederholen: Wenn man nur drei Namen aus dem Modul benötigt, rechtfertigt das keinen Sternchen-Import :)
Fabian Kochem
User
Beiträge: 36
Registriert: Mittwoch 5. April 2006, 14:11
Wohnort: Köln

Müsste dies:

Code: Alles auswählen

sys.path.append("c:\entwicklung\python26\lib")
nicht auch

Code: Alles auswählen

sys.path.append("c:\\entwicklung\\python26\\lib")
lauten?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Da "\e", "\p" und "\l" keine Escape-Sequenzen sind, funktioniert es auch so. Das explizite Voranstellen der doppelten Backslashes ist aber auf jeden Fall besser Stil. Hier könnte man auch

Code: Alles auswählen

r"c:\entwicklung\python26\lib"
verwenden.
Das Leben ist wie ein Tennisball.
Antworten