Avatar billede kkaen Nybegynder
16. marts 2006 - 10:27 Der er 16 kommentarer og
1 løsning

Mailfunktion søges

HVordan laves der en funktion, så når der trykkes på en knap, så sendes der automatisk en mail, med udvalgte informationer fra den aktuelle side?
Avatar billede sneakraid Nybegynder
16. marts 2006 - 11:26 #1
Tjeck den her "tutorial", den har jeg selv brugt. Og den virker glimrende :)

http://www.codeproject.com/useritems/EmailApplication.asp
Avatar billede kkaen Nybegynder
16. marts 2006 - 11:49 #2
Det virker ikke. Kan det være fordi, jeg bruger
MailAddress fromAddress = new MailAddress("mig@dig.dk", TextBox3.Text.ToString());
og
message.From = fromAddress;

forkert?

Fejlen er:
"
Valideringen af visningstilstanden MAC mislykkedes. Hvis programmet er placeret i en webfarm eller en klynge, skal du kontrollere, at <machineKey>-konfigurationen angiver den samme validationKey og valideringsalgoritme. AutoGenerate kan ikke bruges i en klynge.
"
Avatar billede sneakraid Nybegynder
16. marts 2006 - 11:59 #3
Hm, det ser umiddelbart rigtigt ud. Men jeg kan lige give dig et eksempel på den kode jeg bruger, og den virker.

    protected void btnSendmail_Click(object sender, EventArgs e)
    {
        // System.Web.Mail.SmtpMail.SmtpServer is obsolete in 2.0
        // System.Net.Mail.SmtpClient is the alternate class for this in 2.0
        SmtpClient smtpClient = new SmtpClient();
        MailMessage message = new MailMessage();

        try
        {
            MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);

            // You can specify the host name or ipaddress of your server
            // Default in IIS will be localhost
            smtpClient.Host = "localhost";

            //Default port will be 25
            smtpClient.Port = 25;

            //From address will be given as a MailAddress Object
            message.From = fromAddress;

            // To address collection of MailAddress
            message.To.Add("mymail@domæne.dk");
            message.Subject = "Feedback";

            // CC and BCC optional
            // MailAddressCollection class is used to send the email to various users
            // You can specify Address as new MailAddress("mymail@domæne.com")
            message.CC.Add("mymail@domæne.dk");

            //Body can be Html or text format
            //Specify true if it  is html message
            message.IsBodyHtml = false;

            // Message body content
            message.Body = txtMessage.Text;

            // Send SMTP mail
            smtpClient.Send(message);

            lblStatus.Text = "Email successfully sent.";
        }
        catch (Exception ex)
        {
            lblStatus.Text = "Send Email Failed." + ex.Message;
        }
    }
Avatar billede -mundi- Nybegynder
16. marts 2006 - 12:03 #4
Den fejl du får der skyldes sandsynligvis at din application pool er sat til at køre 2 eller flere processer. Hvis du sætter application pool til 1 process får du ikke længere fejlen.
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:04 #5
Jo, men hvad er "txtEmail.Text, txtName.Text" i:
MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);
Og hvad er "fromAddress" i:
message.From = fromAddress;
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:06 #6
Application pool har jeg aldrig hørt om før. Hvor kan jeg finde det (og rette i det)?
Avatar billede -mundi- Nybegynder
16. marts 2006 - 12:08 #7
Hvilket operativsystem tester du på ?
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:16 #8
Win xp pro
Avatar billede sneakraid Nybegynder
16. marts 2006 - 12:16 #9
kkaen >
txtEmail.Text er den mail-adresse som bliver vist i mailen. (altså hvis du f.eks. vil reply'e til afsenderen, sender du til denne adresse)
txtName.Text er så det navn der vises som afsender af mailen.

fromAddress er så variablen der indeholder disse oplysninger :)
Avatar billede -mundi- Nybegynder
16. marts 2006 - 12:17 #10
Så er det ikke det fejlen skyldes :-) Den er kun på IIS6 at man kan indstille processer
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:23 #11
så har
MailAddress fromAddress = new MailAddress(txtEmail.Text, txtName.Text);
og
message.From = fromAddress;
jo nok ikke noget at sige mht fejlen. Men der er jo stadig en fejl...
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:29 #12
Nu har jeg implementeret din fungerende version. Men i lblStatus giver den fejlen:
Send Email Failed.Det kan ikke sendes til alle modtagere.
Hvad betyder det?
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:31 #13
hmm, nu fjernede jeg:
message.CC.Add("mymail@domæne.dk");
og så siger den:

Send Email Failed.Postkassen er ikke tilgængelig. Serversvaret var: 5.7.1 Unable to relay for mail@adresse.dk

så det er nok serveren, som ikke vil tillade det?
Avatar billede sneakraid Nybegynder
16. marts 2006 - 12:33 #14
Bruger du localhost til udgående server for dine mails?

Jeg har ikke helt styr på om det bare lige sådan virker, eller om man skal slå noget til først. Men jeg har mit til at køre på et webhotel, og der kører det ganske fint.
Avatar billede kkaen Nybegynder
16. marts 2006 - 12:55 #15
Det har jo nok noget med serveren at gøre. Men det er ikke mig, der har kontrol over den. Så jeg må lige undersøge det.
Avatar billede kkaen Nybegynder
20. marts 2006 - 15:58 #16
Nu har jeg fået fat i de rigtige serverindstillinger. Og jeg har også sat dem ind i "ASP.NET configuration"-værktøjet inde i Visual Studio 2005. Men det fungerer stadigvæk ikke.
Når jeg kører det, og trykker på "send"-knappen, så får jeg fejlen:

Serverfejl i programmet '/KtData'.
--------------------------------------------------------------------------------

Valideringen af visningstilstanden MAC mislykkedes. Hvis programmet er placeret i en webfarm eller en klynge, skal du kontrollere, at <machineKey>-konfigurationen angiver den samme validationKey og valideringsalgoritme. AutoGenerate kan ikke bruges i en klynge.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Web.HttpException: Valideringen af visningstilstanden MAC mislykkedes. Hvis programmet er placeret i en webfarm eller en klynge, skal du kontrollere, at <machineKey>-konfigurationen angiver den samme validationKey og valideringsalgoritme. AutoGenerate kan ikke bruges i en klynge.

Kildefejl:


[Ingen relevante kildelinjer]


Kildefil: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\bla\d2c5af57\e337e588\App_Web_ei3hhjm1.20.cs    Linje: 0

Staksporing:


[HttpException (0x80004005): Dataene kan ikke valideres.]
  System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +397
  System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +293

[ViewStateException: Ugyldig visningstilstand.
    Client IP: 127.0.0.1
    Port:
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
    ViewState: /wEPDwUJODIwNTg2MDUwD2QWAmYPZBYCAgMPZBYCAgMPZBYCAgEPEGRkFgECAWRkbKMSXv6iGmWGEkf1A3FfrKp+1Kg=
    Referer: http://localhost:1670/bla/henvendelse.aspx
    Path: /bla/retteHenvendelse.aspx]

[HttpException (0x80004005): Valideringen af visningstilstanden MAC mislykkedes. Hvis programmet er placeret i en webfarm eller en klynge, skal du kontrollere, at <machineKey>-konfigurationen angiver den samme validationKey og valideringsalgoritme. AutoGenerate kan ikke bruges i en klynge.]
  System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +171
  System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +37
  System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +328
  System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +30
  System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +52
  System.Web.UI.HiddenFieldPageStatePersister.Load() +257
  System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +137
  System.Web.UI.Page.LoadAllState() +102
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5916
  System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +188
  System.Web.UI.Page.ProcessRequest() +112
  System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +37
  System.Web.UI.Page.ProcessRequest(HttpContext context) +135
  ASP.rettehenvendelse_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\bla\d2c5af57\e337e588\App_Web_ei3hhjm1.20.cs:0
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +401
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +117
Avatar billede kkaen Nybegynder
30. december 2010 - 16:28 #17
lukkes
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester