Hejza. Jeg vil gerne have lidt hjælp til at lave en kode. Hvordan laver man et program til at når man trykker på en knap så går den ind i registreringsdatabasen og finder noget som den skal og sender det til en E-mail. Det er bare til min egen computer. Jeg er ikke ulovlig, såten noget tør jeg slet ikke. Jeg er pisse bange for at komme i fængsel. Jeg spurte nogen på et andet forum. De sagde hvis jeg kun brugt det til min egen computer så var det ikke ulovligt. Er der nogen der kan hjælp med det? Det skal være stået at man kan skrive ind i kode hvor den skal gå hen og finde det, og sende det med E-mail. Den E-mail som den skal send det til skal være en man har skrevet ind i koden. Er der nogen der kan hjælp med det? ;o)
Her er den kode jeg har lavet.
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;
namespace Lav_backup { /// <summary> /// Description of MainForm. /// </summary> public class MainForm : System.Windows.Forms.Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent();
// // TODO: Add constructor code after the InitializeComponent() call. // }
#region Windows Forms Designer generated code /// <summary> /// This method is required for Windows Forms designer support. /// Do not change the method contents inside the source code editor. The Forms designer might /// not be able to load this method if it was changed manually. /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(32, 29); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(229, 23); this.button1.TabIndex = 0; this.button1.Text = "Lav backup nu og send dem til min E-mail."; this.button1.UseCompatibleTextRendering = true; this.button1.UseVisualStyleBackColor = true; // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(317, 266); this.Controls.Add(this.button1); this.Name = "MainForm"; this.Text = "Lav backup af spejsl registreing"; this.ResumeLayout(false); } private System.Windows.Forms.Button button1; #endregion } }
Ok, nu har jeg ikke selv Skype instralleret så det bliver en lille smule i blinde ... men du kan sikkert hjælpe mig igennem med et par oplysninger. ;^)
Prøv først at lave et helt nyt Console program med denne kode:
using System; using Microsoft.Win32;
namespace e687700 { class Program { static void Main(string[] args) { // HKEY_LOCAL_MACHINE\SOFTWARE\Skype RegistryKey registryKey1 = Registry.LocalMachine;
(Grunden til at det er vigtigt at have Skype installeret, er at det betyder noget for hvordan din værdi skal hentes. Ellers kan jeg da sagtens selv lave ændringer i min registreringsdatabase.)
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Microsoft.Win32;
namespace e687700 { /// <summary> /// Description of MainForm. /// </summary> public class MainForm : System.Windows.Forms.Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent();
// // TODO: Add constructor code after the InitializeComponent() call. // }
#region Windows Forms Designer generated code /// <summary> /// This method is required for Windows Forms designer support. /// Do not change the method contents inside the source code editor. The Forms designer might /// not be able to load this method if it was changed manually. /// </summary> private void InitializeComponent() { // // Form1 // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "MainForm"; this.Name = "MainForm"; }namespace e687700 { class Program { static void Main(string[] args) { // HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla RegistryKey registryKey1 = Registry.LocalMachine;
foreach (string valueName in registryKey2.GetValueNames()) { Console.WriteLine(valueName); }
} } } #endregion }
De her fej får jeg
Invalid token "namespace" in class, struct, or interface member declaration(CS1519) Invalid token "{"in class, struct,or interface member declaration(CS1519)
Kan vi ikke lige holde os til de helt simple programmer indtil at vi har fået noget som virker? PÅ den måde bliver du ikke distraheret af en masse irellevant som har meds GUI'en at gøre. :^)
foreach (string valueName in registryKey2.GetValueNames()) { Console.WriteLine(valueName); }
} } }
også stardet den og den gemmeførte det. Men der sket jo ikke noget. Ikke hvad jeg kunne se. Jeg kunne se at den kørt programmet. Så det virker. Men der var ingen tejn på programmet. Hvad gøre det ind til vidre?:o) Skal vi så sætte noget mere på? ;o)
Der sker ikke noget når jeg trykker på den exe file. Eller når jeg køre det i Sharpdevelop. Så det kunne være at man skulle lave det såten at man kunne trykke på en knap men ved det ikke. Det kan være i har en bedre ide. :o)
Jeg blev selv lidt i tvivl lige som jeg havde postet beskeden, for jeg mener faktisk at på mit arbejde skriver den "Tryk på en vilkårlig tast for at fortsætte . . ." og venter. Så jeg måtte lige teste. Jeg har lige testet med både VS2003 og VS2005 her hjemme og der lukker konsol vinduet bare. Gad vide om det er noget configurations noget?
josefine14 bruger ikke Visual Studio, men i stedet det udemærket alternativ SharpDevelop. Måske opføre det sig andereledes end VS på netop dette punkt. :^)
Det skulle så være alt det der blev sænte til min e-mail når man trykke på exe filen eller trykke på en knap inde i programmet. Enten i den fil eller bare som skrift. :o)
Det skulle så være alt det der blev sendt til min e-mail når man trykke på exe filen eller trykke på en knap inde i programmet. Enten i en fil eller bare som skrift. :o) (rettet det lige)
Det er jo langt fra alle sammen som ligger inde under HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla. Det er der f.eks. ingen i hele den første store blok som gør.
Jeg lave lidt om på kode Så den ser såten her ud nu:
using System; using Microsoft.Win32; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;
namespace dvfdg { /// <summary> /// Description of MainForm. /// </summary> public class MainForm : System.Windows.Forms.Form { public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent();
// // TODO: Add constructor code after the InitializeComponent() call. // }
#region Windows Forms Designer generated code /// <summary> /// This method is required for Windows Forms designer support. /// Do not change the method contents inside the source code editor. The Forms designer might /// not be able to load this method if it was changed manually. /// </summary> private void InitializeComponent() { // // Form1 // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "MainForm"; this.Name = "MainForm";}
class Program { static void MainForm(string[] args) { // HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla RegistryKey registryKey1 = Registry.LocalMachine;
Jeg ved ikke om det er gjort forkert. Men det kunne være at man skulle trykke på en knap i stede for. Men jeg ved ikke helt om du har forstå hvad det er jeg gerne vil. :o)
Jeg vil gerne have såten at når man trykke på en kanp inde i programmet eller åbner det, så skal den sende det med E-mail til mig. :o) Jeg er glad for at du gider og hjælp. ;o)
Du skal ikke lave dit program som et Windows-program (et WinForms-program) - du skal derimod lave det som et Console-program; Ellers har Console.Writeln() nemlig ingen som helst effekt.
Jeg har sådan set forstået hvad du gerne vil - men alt det med at pakke det ind i en pæn GUI med en knap du kan trykke på osv. osv. - det er sådan set bare en pæn indpakning. Det vi skal koncentrere os om til at starte med er at lave selve indholdet af "pakken". Derefter kan vi koncentrere os om præsentationen. ... altså i min mening.
Nu har jeg lavet det som (Console Application) Er det rigtig? Det er det jeg mest kan finde som har det samme navn som det du siger.
Når jeg køre programmet kommer den op med et sort dos vindue hvor den hurtigt køre noget txt igennem og lukker ned det vare kun 1 sekund. Her er et billede af det:
OK det har jeg gjort nu. :o) Nu bliver stående ind til at jeg trykker på en knap. Det virker nu, nu lukker det IKKE ned. ;o) Hvad skal vi så gøre nu. :o)
Med "trække værdierne ud" forsøgte jeg bare at forklare hvad det er som er kommet til fra version 13/02-2006 21:37:48 til version 14/02-2006 19:19:43. I første version skrev programmet variable-navnene ud, men det udskrev ikke den værdi der var i variablen. Det gør den nyeste. :^)
Jeg ved ikke hvordan det fungere i SharpDevelop, men i Visual Studio kan man sætte refferencer op til de .Net biblioteker der skal tages med under kompileringen. Noget lignende må du kunne gøre i SD.
Der skal oprettes referencer til minimum disse to:
System.dll System.Web.dll
(Der kan godt være flere referencer uden at det gør noget)
Det er mærkligt det bliver ved med at komme med den samme fejl.
nu prøvet jeg at lave det såten
using System; using System.Collections.Generic; using System.Web.Mail;
namespace e687700mail { class Program { static void Main(string[] args) { MailMessage mailMessage = new MailMessage(); mailMessage.To = "nielle@xxxxxx.dk"; mailMessage.From = "josefine14@yyyyyy.dk"; mailMessage.Subject = "Mailens titel"; mailMessage.Body = "Mailens body";
SmtpMail.SmtpServer = "den smtp server der skal sendes via"; SmtpMail.Send(mailMessage); } } }
Jeg har prøvet at skrive nogen rigtige, mail adresser ind også. Det hjælper heller ikke.
Fejle er jo selvfødig den samme: The type or namespace name "Mail" does not exist in the namespace " System.Web" (are you missing an assembly reference?)(CS0234)
Det er ikke kun gjort med at tilføje dem under "using ..." - der må også være et andet sted hvor at du skal oprette referencer. I Visual studio hedder det References og ligger ud i højre side af skærmen (ikke at denne oplysning nødvendigvis hjælper dig meget).
Det må du udskylde. Men jeg har lige skulle formater min computer, og jeg fik før installer Visual studio 2005 i dag der kl 1:24, og der ville jeg i seng så jeg nåde ikke at få det prøvet.
Men det vil jeg gøre her ved 14 tide i dag.
skal nemlig nogte her kl. 12. :o) Jeg undskyler for at du skulle installer Sharpdevelop. Det har været så vært for mig og få fat i Visual Studio 2005.
Men jeg tænk hvis jeg fik fat i det så ville det være nemmer for dig :o)
Hej. :o) NU har jeg lave et program igen. Jeg lavet det med det her:
using System; using System.Web.Mail;
namespace e687700mail { class Program { static void Main(string[] args) { MailMessage mailMessage = new MailMessage(); mailMessage.To = "sun2345@yahoo.dk"; mailMessage.From = "shine1233@yahoo.dk"; mailMessage.Subject = "Mailens titel"; mailMessage.Body = "Mailens body";
SmtpMail.SmtpServer = "den smtp server der skal sendes via"; SmtpMail.Send(mailMessage); } } }
Og det er under Program.cs jeg ligger det ind.
Men jeg får den her fejl:
Error 1 The type or namespace name 'Mail' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) C:\Documents and Settings\Josefine\Dokumenter\Visual Studio 2005\Projects\e687700mail\e687700mail\Program.cs 2 18 e687700mail
Nu bruger jeg Visual Studio 2005. :o)
Hvad er der galt tror du?
Nu skal jeg jo bare lære og forstå Visual Studio. Det kan jo 100 gang flere ting ind Sharpdevelop. ;o)
Ude i højre side af din skærm (i vinduet Solution Explorer) har du et punkt som hedder References. Hvis du åbner dette skulle der gerne være installeret 3 referencer pr. default:
System System.Data System.Xml
MEN! der mangler een for at programmet kan kompile (og det var også det som var dit problem i SharpDevelop):
Højre-klik på References. Dette bringer en dialog op "Add Reference". Under .Net-fanen finder du så System.Web.dll og tilføjer den som reference. Derefter burde det kunne kompilere.
PS: det var nu ganske frivilligt at jeg ville installer SharpDevelop - har i øvrigt haft det installeret før.
Forresten vil jeg skrive en del af koden om - at det ovenstående er nemlig 1.1 kode (fordi at det skulle fungere med SD). Men nu bruger du jo faktisk 2.0, pg så kan vi lige så godt udnytte det. :^)
Men se nu om du kan få det ovenstående til at fungere - og få sendt en mail til dig selv.
Når du sender en mail til en fremmed e-mail adresse, foregår det ved at dit e-mail program kontakter en server hos din Internet-udbyder. Denne server kaldes for en SMTP-server (forkortelse af ”Simple Mail Transfer Protocol”). Dit email program uploader derefter mailen, samt eventuelle attachments, til SMTP-serveren og beder den om at sende den til den email.
Hvad der videre sker er lidt irrelevant i sammenhængen, men lad mig bare fortælle om det alligevel. Kort fortalt sker der det at e-mailen herefter sendes fra SMTP-server til SMTP-server indtilæ at den er nået frem til der hvor at e-mailen skal afleveres. Her havner den i en ny type server – en POP3 server (for ”Post Office Protocol”). Her bliver e-mailen liggende indtil at e-mail adressens ejere kobler sig på Internettet og tjekker sin mail. På det tidspunkt bliver mailen, samt eventuelle attachments, downloaded.
SMTP-serveren kaldes derfor ofte for den udgående mailserver, mens at POP3-serveren kaldes for den indgående email-server.
Det er nødvendigt at vide hvad SMTP-serveren hedder, for ellers kan man ikke få afsendt mailen. Dette afhænger altså ikke af hvem det er som skal modtage mailen.
Med denne linje kode:
SmtpMail.SmtpServer = "den smtp server der skal sendes via";
angiver man over for SmtpMail hvilken SMTP-server den skal anvende. Navnet på serveren skal skrives i strengen på højre side.
SMTP-serveren stilles til rådighed af din Internet-udbyder (din såkaldte ISP for ”Internet Service Provider”), og du vi sikkert have fået oplyst navnet på den som en del af de oplysninger du fik da abonnementet blev oprettet.
I tilfælde af at du skulle have glemt dem, kan du formentlig slå dem op i Outlook. Det går du (vist nok) ved at kigge under menupunktet Værktøj og der skal her være et underpunkt som hedder E-mail kontoer eller sådan noget. Hvis du kilkker dig ind under dette punkt, kommer du på et tidspunkt til en liste over de servere du bruger. Her skal du tage det hvor at der står SMTP ved. Skriv det navn i kodelinjen.
Hvis din udbyder er Cypercity, kunne der f.eks. stå:
Hvorfor bragte du så Outlook på banen (16/02-2006 20:16:14)?
Nej, jeg tvivler stærkt på at "yahoo.com" eller "post.yahoo.com" dur, men du kan jo prøve. Jeg har ingen anelse om hvorvidt Yahoo overhovedet stiller en SMTP-server til rådighed eller om den enste mulighed er at sende mails ved at logge sig ind på deres website.
Men siden at du jo *kan* komme på Internettet, så må du have en Internet udbyder og de *har* en SMTP server - kontakt deres support hvis du vil have navnet.
smtp.mail.yahoo.com er måske en mulighed, men ifølge listen du har fundet så kræver den autentication - altså at du skal logge ind på den for at kunne sende fra den (sikkert for at undgå at folk bruger den til at spamme med).
Dette kræver altså at du har et brugernavn og et password. Måske kan d bruge de værdier som du logger ind på din Yahoo konto med - det kan du jo prøve.
Men, den mail-dims vi har brugt ind til nu - System.Web.Mail.SmtpMail.SmtpServer - synes ikke at understøtte at man kan logge ind. Derfor må vi tage fat på en anden mulighed. Prøv derfor om du kan få dette her til at virke:
using System; using System.Net.Mail;
namespace e687700mail2 { class Program { static void Main(string[] args) { string to = "nielle@xxxxxx.dk"; string from = "josefine14@yyyyyy.dk"; string subject = "Mailens titel"; string body = "Mailens body";
MailMessage mailMessage = new MailMessage(from, to, subject, body);
SmtpClient mailClient = new SmtpClient("smtp.mail.yahoo.com"); mailClient.Credentials = new System.Net.NetworkCredential("dit login navn", "dit password");
Hehe, denne tråd har nu strukket sig over 1 3/4 år... Jo, jeg tror også, det er på tide at lukke xP
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.