VisualBasic Mit VisualBasic emails versenden

Sonoxu

Cadet 2nd Year
Registriert
Feb. 2016
Beiträge
27
Hallo,
Ich lerne grade dass programmieren und habe mich deshalb für die Sprache VisualBasic entschieden.
Ich habe einen "Webbrowser" erstellt und wollte einen Button [ Link per Email senden...] einbauen, also wie beim Firefox. Ich habe mit Process.Start("mailto: " + TextBox1.Text eine Fungion erstellt der den Standart mailclient öffnet und den Link reinkopiert. Nur ist das Problem, der Link wird im Feld wo der Empfänger stehen soll reinkopiert. Kann man das auch umändern damit der Text von der TextBox1.Text (also Link) in der Email steht? Also nicht beim Empfänger? Wenn ja würde ich mich sehr freuen.

Danke für die Hilfe (im Voraus)
 
Hi,
poste doch mal den gesamten Code für die Funktion.
Dann kann man Dir evtl. besser weiterhelfen.
 
Nur jetzt den mailto Button oder das ganze programm?
 
Google sagt:
Mail an einen Hauptempfänger und einen sichtbaren Kopienempfänger
mailto:beispiel@example.org?cc=heidi.bratze@example.org
Mail mit Kopie

Mail an einen Hauptempfänger und einen unsichtbaren Kopienempfänger
mailto:beispiel@example.org?bcc=heidi.bratze@example.org
Mail mit Geheimkopie

Mail mit vordefiniertem Subject (Betreff)
mailto:beispiel@example.org?subject=eine%20Mail%20von%20deinen%20Web-Seiten

Mail mit vordefiniertem Body (Nachrichtentext)
mailto:beispiel@example.org?body=Hallo%20Fritz,%0D%0A%0D%0Aich%20wollte%20nur%20sagen,%20dass%20
Mail mit Body

Mail mit kombinierten Optionen
<a href="mailto:fritz.eierschale@example.org?cc=heidi.bratze@example.org&subject=Hallo%20Fritz,%20hallo%20Heidi
cc und Subject

Du musst die nicht erlaubten Leerzeichen/Sonderzeichen wie in den Beispielen natürlich korrekt formatieren, sonst wird das nix
 
Wenn mich nicht alles täuscht:

Code:
MailItem.ConversationTopic


Also in etwa:
Code:
Dim MItem as MailItem 
Dim oJBetreff as Obj
Dim StrMailBetreff as String
oJBetreff = MItem.ConversationTopic 
StrMailBetreff = "Dein Topic Hier"

Set oJBetreff = StrMailBetreff

usw usf. Wie du das dann in deinen Code einbastelst [For Each ?!], musste selber schauen...


Ich weiß nicht, was genau Du vorhast. Aber arbeite nicht in der Form mit MailTo. Mailto ist ja nur der Befehl, er instanziert dir aber nicht die Mail als Objekt zur weiteren Verarbeitung. Das würde ich direkt mit reinbauen. Wenn Du später noch irgendwas mit der Mail machen willst (verschieben oder sonstwas) - tue Dir selbst den gefallen und instanziiere die Mail direkt am Anfang als Obj

Spart Dir später jede Menge Arbeit ;)
 
Zuletzt bearbeitet:
Danke für die Antworten.

Ich will aber das die Mail Nachricht (nicht der Betreff) der TextBox1.Text entspricht.

Also der soll den Link senden. An eine Mail-Adresse die man selbst wählen kann. Das CC und den Betref soll er auch nicht bearbeiten, sondern nur die Nachricht. Mit dem Befehl den ich hatte, hat der den Text ( TextBox1.Text ) beim Empfänger hingeschrieben.

Das soll halt passieren. Bin noch nicht so lange mit VidualBasic am programmieren aber lerne es ja noch.

Ich hoffe man kann das so machen. Wenn jemand den Begehl kennt dann Danke im Voraus!
Ergänzung ()

Ist dass nicht HTML? Bei dem was Google sagt?
 
Zuletzt bearbeitet:
Alle Optionen stehen doch in meinem Post
 
Ich will ja keinen bestimmten Text haben, ich will ( was auch immer) in TextBox1.Text steht, einfügen lassen. Oder geht das auch damit?
 
Bist du des Lesens nicht mächtig? Alle Informationen die du brauchst wurden bereits genannt. Den Rest musst du selber auf die Reihe bekommen.
 
Process.Start("mailto:beispiel@example.org?body=" + TextBox1.Text)
wobei TextBox1.Text nach wie vor keine ungültigen Zeichen enthalten darf
 
Tu dir den Gefallen und instanziiere die Mail als Objekt...
Ich habe mir VBA auch selbst beigebracht und solche Sachen leider erst im Nachhinein realisiert. Hätte ich das vorher auf dem Schirm gehabt, wären mir viele Fehler und Neuprogrammierungen erspart geblieben.

Der schnellste Weg ist, gerade beim programmieren, selten der Beste.

Wenn Dir später auffällt, dass du mit der Mail gerne noch etwas machen würdest (direkt in einen Ordner verschieben, prüfen ob die in gesendet liegt, etc pp) kannste das oben nachträglich umschreiben / einfügen..

Tipp:

Dim EMailTo as Obj
Dim Empfaenger as String
Empfaenger = "Mail@Adresse.de"
EMailTo = ("mailto: Empfaenger?body =" + TextBox1.Text)

Oder mit InputBox für den User:

Dim EMailTo as Obj
Dim Empfaenger as String
Empfaenger = Inputbox("Geben Sie die Mail Adresse des Empfängers ein")
EMailTo = ("mailto: Empfaenger?body =" + TextBox1.Text)
usw usf
 
Zuletzt bearbeitet:
Ok, danke.

Habe es jetzt hingekriegt, aber was meintest du mit "instanziere die Mail als Objekt" Sun_set_1 ? So weit bin ich mit Visual Basic auch nicht :( . Meintest du ich soll sogesagt z.B. ein eigene art von "WebBrowser1. ..." oder "TextBox1.Text" anlegen? Also ein eigenes Objekt? Wenn ja, wie macht man das?

Aber erstmal danke für die Hilfe!
 
Puh, wie soll ich das 'einfach' erklären :)
"Objekten instanziieren" meint eigentlich nur bestimmte Prozesse oder Aufrufe als ein "Objekt" innerhalb eines Projektes abzuspeichern. "Nur" ist an der Stelle aber relativ. Die Funktionsweise von Objekten zu verstehen ist essentiell für VB / JavaScript etc. und ein Riesen-Thema.

Der Befehl mailto() ist ja erstmal nur ein Befehl. Dieser Befehl erzeugt eine Email. Was aber wenn du diese E-Mail später weiter verarbeiten möchtest? Du hast keine Verweise auf diese E-Mail, kannst der Prozedur also nicht sagen "hey nimm die Mail aus dem Mailto() Aufruf".

Damit das funktioniert, musst Du den eigentlichen Aufruf von Mailto vorher als Objekt instanziieren. Mein Code vorher bitte ignorieren, der war falsch (aus dem letzten Posting). Hier mal wie sowas sauber in VBA aussieht und wohl das ist, was du eigentlich wolltest:

Code:
Public Sub CreateNewMessage()
Dim objMsg As MailItem '<- hiermit instanziierst du die Mail als Objekt. MailItem ist eine Objektklasse in VBA. Man teilt der Prozedur mit, das es sich bei dem Objekt um eine E-Mail handelt. 
 
Set objMsg = Application.CreateItem(olMailItem) '<- hier sagen wir ihm wo das Objekt herkommt, bzw erzeugen es selbst. Application stellt meines Wissens nach die Variable für das Standard-Mail Programm dar. Hier bin ich mir aber gerade nicht ganz sicher.
 

 With ObjMsg 'was soll er nun damit machen
  .To = "Alias@domain.com"
  .CC= "Alias2@domain.com"
  .BCC = "Alias3@domain.com"
  .Subject = "This is the subject"
  .Categories = "Test"
  .VotingOptions = "Yes;No;Maybe;"
  .BodyFormat = olFormatPlain ' send plain text message
  .Importance = olImportanceHigh
  .Sensitivity = olConfidential
  .Attachments.Add ("path-to-file.xls")
   
  .Display 'müsste bei dir mit dem Send Befehl ausgetauscht werden
End With

Wenn Du dann später mit genau dieser E-Mail noch etwas machen möchtest kannst Du das immer wieder mit dem Aufruf von ObjMSg erledigen.

Quelle: http://www.slipstick.com/developer/create-a-new-message-using-vba/
 
Zuletzt bearbeitet:
Ich empfehle VBA für Dummies, damit solltest Du das recht schnell lernen.
 
Ich würde ja sowieso gleich mal was anderes vorschlagen:
Nimm c# .Net als Einsteigersprache. Damit kannst du dann auch auf andere Sprachen umsteigen. VB ist einfach eine tote Sprache und andere und vorallem echte Objektorientierung danach schwer zu erlernen, wenn das richtige Programmieren quasi falsch lernt.
Dazu gibts auch kostenlose diverse Galileo Openbooks (hießen zumindest mal so)
VB hat nur noch eine Daseinsberechtigung bei Office-Makros und selbst da kann man die einfach programmieren, wenn man eine höhere Sprache beherrscht. Also: Reite kein totes Pferd ;)
 
Ich bin von VB zu Java-Script gegangen und fand VB als Einsteigersprache hier ziemlich praktisch. Im Prinzip gehts doch nur darum die Basics der objektorientierten Programmierung zu lernen. Dafür fand ich die Einleitung in dem Entwicklerbuch von MS sehr sehr gut :)
 
Kommt immer darauf an wo man am Ende hin will mit seiner Programmiererei. Mit VB/A Php oder Java lernt man selten sauberes programmieren da die meisten Tutorials im Netz oft nicht sauber programmiert sind.
Fürs Hobby reicht auch VB, wenn man aber am Ende aufwändigere Sachen plant dann lieber was anderes. Kommt auch immer auf das geplante Einsatzgebiet an.
Für reinen Hobbybetrieb würde ich nicht C/C++ nehmen, außer man plant aufwändigere Spiele oder man nimmt sicht viel Zeit zum Lernen. Wenn man eher Datenbankfrontends in MS Umgebungen schreiben will würde ich VB.net/C#.net nehmen.
@rg88 Entwickler die tote Sprachen können verdienen heute das meiste Geld. Allerdings müssen die dann schon solange tot sein wie Cobol und Fortran ;)
@Sun_Set_1: ja was debuggen betrifft ist für Anfänger VB schon das einfachste, aber wenn man hinterher andere Sprachen lernt flucht man hin und wieder über die Schweinereien die man sich durch VB angewöhnt hat ;) Ich hatte vorher Turbo Pascal programmiert, da hielt sich dad noch im Rahmen ;)
 
Sun_set_1: Du gibst hier VBA-Code (mit entsprechenden Verweisen auf dessen Framework) als VB.net Code ab und forderst, dass der TE die Mail doch als "Objekt instantiiert". Ich glaube du bist nicht in der Lage zu beurteilen, ob VB.net eine vernünftige Einsteigersprache ist. ^^
Und in dem großen Topf, in den man C#, Java UND C++ reinpacken kann, passt selbst Javascript nicht rein. Javascript ist im Kern sehr schwach typisiert und klassenlos, dabei läuft js nur im Browser.
 
Zurück
Oben