Avatar billede mahyar Nybegynder
30. marts 2006 - 17:22 Der er 16 kommentarer og
2 løsninger

Problemer med at lave HTML mailformular

jeg har lavet nedenstående kode i VS2005 men når jeg kører den får jeg følgende fejl:

+        InnerException    {"Asynchronous operations are not allowed in this context. Page starting an asynchronous operation has to have the Async attribute set to true and an asynchronous operation can only be started on a page prior to PreRenderComplete event."}    System.Exception {System.InvalidOperationException}



det skal siges at den er en weballication. Min kode er som følgende:



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Configuration;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;


public partial class Default2 : System.Web.UI.Page
{
    static bool mailSent = false;

    protected void Page_Load(object sender, EventArgs e)
    {

    }


    public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
    {
        // Get the unique identifier for this asynchronous operation.
        String token = (string)e.UserState;

        if (e.Cancelled)
        {
            Console.WriteLine("[{0}] Send canceled.", token);
        }
        if (e.Error != null)
        {
            Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
        }
        else
        {
            Console.WriteLine("Message sent.");
        }
        mailSent = true;
    }



    private void sendMail()
    {
        //HTML mail
       

        //ArrayList skindArrayl = arrList;
        StringBuilder strb = new StringBuilder();

        strb = new StringBuilder();

        SmtpClient client = new SmtpClient("smtp.galnet.dk");

        MailAddress from = new MailAddress(txtEmail.Text);

        MailAddress to = new MailAddress("mahyar@galnet.dk");

        MailMessage message = new MailMessage(from, to);


        message.Subject = "Henvendelse vedrører: " + CheckBoxList1.SelectedItem.Value;

        client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
       
       



        strb.Append("<html><body bgcolor = #fffaf0>");


        strb.Append("<Center><h4>Email fra en besøgende</h4></Center><br><br>");

        strb.Append("<Center><table border='0' width = 600 bgcolor = #ffcc99 ></Center>");


        strb.Append(string.Format("<tr><td><b>Dato:</b></td><td>{0}</td></tr>", DateTime.Now.ToShortDateString()));

        strb.Append(string.Format("<tr><td><b>Navn</td><td>{0}</td></tr>", txtKontaktperson.Text));
        strb.Append(string.Format("<tr><td><b>Kontaktperson</td><td>{0}</td></tr>", txtKontaktperson.Text));
        strb.Append(string.Format("<tr><td><b>Adresse</td><td>{0}</td></tr>", txtAdresse.Text));
        strb.Append(string.Format("<tr><td><b>Postnr</td><td>{0}</td></tr>", txtPostnr.Text));
        strb.Append(string.Format("<tr><td><b>By</td><td>{0}</td></tr>", txtBy.Text));
        strb.Append(string.Format("<tr><td><b>Tlf</td><td>{0}</td></tr>", txtTlf.Text));
        strb.Append(string.Format("<tr><td><b>Fax</td><td>{0}</td></tr>", txtFax.Text));
        strb.Append(string.Format("<tr><td><b>Tlf</td><td>{0}</td></tr>", txtTlf.Text));
        strb.Append(string.Format("<tr><td><b>Ønsket dato</td><td>{0}</td></tr>", txtDato.Text));
        strb.Append(string.Format("<tr><td><b>Ønsket klokkeslet</td><td>{0}</td></tr>", txtKlokkeslet.Text));
        strb.Append(string.Format("<tr><td><b>Fax</td><td>{0}</td></tr>", txtFax.Text));
        strb.Append(string.Format("<tr><td><b>Kommentar</td><td>{0}</td></tr>", txtKommentar.Text));

        strb.Append("</table><br>");

        strb.Append("</body></html>");
        message.Body = strb.ToString();

        string userState = "test";

        try
        {
            client.SendAsync(message, userState);

        }

        catch (Exception mailException)
        {
            Trace.Write(mailException.ToString());

        }


    }
Avatar billede dr_chaos Nybegynder
30. marts 2006 - 17:28 #1
i dit page directive skal du sætte Async="true".
Avatar billede dr_chaos Nybegynder
30. marts 2006 - 17:31 #2
Du skal starte mail afsendelse i :
protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
sendMail();
    }
Avatar billede arne_v Ekspert
30. marts 2006 - 17:58 #3
hvorfor ikke bare lave en normal synch send ?
Avatar billede mahyar Nybegynder
30. marts 2006 - 23:02 #4
hvordan kan jeg lave den om til en synch send?
Avatar billede mahyar Nybegynder
30. marts 2006 - 23:23 #5
når jeg sætter Async=true på oage directive vil den sende mailen. Men den biver ik sendt som html-formular....den bliver sendt som en textformular....
Avatar billede arne_v Ekspert
31. marts 2006 - 03:05 #6
client.Send(message);
Avatar billede dr_chaos Nybegynder
31. marts 2006 - 08:02 #7
du skal sætte IsBodyHtml til true:

System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();

Message.IsBodyHtml = true;
Avatar billede mahyar Nybegynder
31. marts 2006 - 13:30 #8
jeg får denne fejl når jeg kører programmet:

"Command parameter not implemented. The server response was: <privat-189fd287>: Helo command rejected: need fully-qualified hostname"
Avatar billede mahyar Nybegynder
31. marts 2006 - 13:31 #9
jeg har også sat IsBodyHtml=true....
Avatar billede dr_chaos Nybegynder
31. marts 2006 - 17:19 #10
hvad står der i :
txtEmail.Text ?
Avatar billede mahyar Nybegynder
31. marts 2006 - 18:19 #11
i txtemail.Text, vil der stå afsenderens emailadresse...
Avatar billede dr_chaos Nybegynder
31. marts 2006 - 20:21 #12
kaldet sendMail() før der er indtastet noget i feltet ?
Avatar billede mahyar Nybegynder
01. april 2006 - 17:28 #13
sendMail() kalder jeg med en button. men der bliver ikke sendt nogle mails...
Avatar billede mahyar Nybegynder
03. april 2006 - 11:33 #14
jeg prøver at sende den som normal synch send med den nedenstående kode. Er der andet jeg også skal gøre? for der bliver ikke sendt noget.


private void sendMail()
    {
        //HTML mail
       

        //ArrayList skindArrayl = arrList;
        StringBuilder strb = new StringBuilder();

        strb = new StringBuilder();

     

        MailAddress from = new MailAddress(txtEmail.Text);

        MailAddress to = new MailAddress("mahyar@galnet.dk");

        MailMessage message = new MailMessage(from, to);




        SmtpClient client = new SmtpClient("smtp.galnet.dk ");

       


        message.Subject = "Henvendelse vedrører: " + CheckBoxList1.SelectedItem.Value;

       
       

       

        strb.Append("<html><body bgcolor = #fffaf0>");


        strb.Append("<Center><h4>Email fra en besøgende</h4></Center><br><br>");

        strb.Append("<Center><table border='0' width = 600 bgcolor = #ffcc99 ></Center>");


        strb.Append(string.Format("<tr><td><b>Dato:</b></td><td>{0}</td></tr>", DateTime.Now.ToShortDateString()));

        strb.Append(string.Format("<tr><td><b>Navn</td><td>{0}</td></tr>", txtKontaktperson.Text));
        strb.Append(string.Format("<tr><td><b>Kontaktperson</td><td>{0}</td></tr>", txtKontaktperson.Text));
        strb.Append(string.Format("<tr><td><b>Adresse</td><td>{0}</td></tr>", txtAdresse.Text));
        strb.Append(string.Format("<tr><td><b>Postnr</td><td>{0}</td></tr>", txtPostnr.Text));
        strb.Append(string.Format("<tr><td><b>By</td><td>{0}</td></tr>", txtBy.Text));
        strb.Append(string.Format("<tr><td><b>Tlf</td><td>{0}</td></tr>", txtTlf.Text));
        strb.Append(string.Format("<tr><td><b>Fax</td><td>{0}</td></tr>", txtFax.Text));
        strb.Append(string.Format("<tr><td><b>Tlf</td><td>{0}</td></tr>", txtTlf.Text));
        strb.Append(string.Format("<tr><td><b>Ønsket dato</td><td>{0}</td></tr>", txtDato.Text));
        strb.Append(string.Format("<tr><td><b>Ønsket klokkeslet</td><td>{0}</td></tr>", txtKlokkeslet.Text));
        strb.Append(string.Format("<tr><td><b>Fax</td><td>{0}</td></tr>", txtFax.Text));
        strb.Append(string.Format("<tr><td><b>Kommentar</td><td>{0}</td></tr>", txtKommentar.Text));

        strb.Append("</table><br>");

        strb.Append("</body></html>");

        message.IsBodyHtml = true;
        message.Body = strb.ToString();



        //client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);


        string userState = "test message1";

        try
        {
            //client.SendAsync(message, userState);
            client.Send(message);

        }

        catch (Exception mailException)
        {
            Trace.Write(mailException.ToString());

        }


    }

 

    protected void btnSend_Click(object sender, EventArgs e)
    {
     
            sendMail();

         
     
    }
Avatar billede dr_chaos Nybegynder
03. april 2006 - 17:33 #15
får du nogen fejl ?
Avatar billede mahyar Nybegynder
03. april 2006 - 21:28 #16
fejlen er nu rettet...der slulle bare den rigtige smtp server på.....kan man dele points her?...for dig og arne v, har været en stor hjælp. Jeg vil meget gerne dele pointene
Avatar billede dr_chaos Nybegynder
04. april 2006 - 08:30 #17
vi skal bare lægge et svar begge to også skal du markere begge navne.
Avatar billede arne_v Ekspert
04. april 2006 - 13:19 #18
.
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