Avatar billede KatieBS Nybegynder
13. april 2012 - 11:07 Der er 7 kommentarer

smtp Mail problemer

Hej folkens.

Jeg sidder og er igang med at lave et booking system. Når man trykker book, skal derfor sendes en mail fra brugeren med data.

Booking.aspx.cs

var objMail = new Mail();
var mail = "<table width='500px' cellpadding='5px'>" +
"<tr><td width='100px'>Pickup date</td><td>" + Date.ToString() + "</td><td width='100px'>My Reference No.:</td><td>" + Ref.ToString() + "</td></tr></table>";
var mailTo = "damco.booking@gmail.com";
var sendMail = objMail.SendMail(Shipper.ToString(), mailTo, Shipper.ToString(), mail);
litmessage.Text = sendMail;

(jeg har lige forkortet dataen lidt ned til ekspemlet, så det ikke blev for voldsomt :O) )

Mail.cs
    public string SendMail(string mailFrom, string mailTo, string subject, string mail)
    {
        try
        {
            var minMail = new MailMessage(mailFrom, mailTo, subject, mail);
            minMail.IsBodyHtml = true;

            var minSmtp = new SmtpClient();
            minSmtp.EnableSsl = true;
            minSmtp.Send(minMail);
            return "";
        }
        catch (Exception e)
        {
            return "There was an accident :O: " + e.Message;
        }
    }

Web.config
  </system.web>
  <system.net>
    <mailSettings>
      <smtp from="kaatrine5@hotmail.com" deliveryMethod ="Network" >
        <network host ="smtp.gmail.com" password="Kodeord" userName="damco.booking@gmail.com"  port="587" />
      </smtp>
    </mailSettings>
  </system.net>


Den sender simpelthen ikke noget. Og melder ikke nogen fejl. Jeg har prøvet både på den localehost og når den er publish og uploadet.. Nogen der kan fortælle mig hvorfor? Eller give et bedre ekspemle på at lave en smtp mail??? Jeg har ikke prøvet at lave det før.

Derudover er jeg lidt i tvivl - på længere sigt er det absolut ikke meningen at den skal sendes fra min mail, men fra brugerens mail - hvordan får jeg den til det?

Hilsen Katrine!
Avatar billede Syska Mester
13. april 2012 - 11:20 #1
Er du sikker på du ikke sluger den exception?

Fjern alt det try/catch til at starte med, hvis du ikke kan gøre noget ved en exception bør du ikke catche den her, hvor hvor du kan præsentere brugere for fejl beskeden.

At tjekke string.IsNullOrWhitespace er ikke specielt kønt for at se om der er en fejl.

Er du sikker på deres smtp tillader at du sender som "kaatrine5@hotmail.com" ?
Avatar billede arne_v Ekspert
14. april 2012 - 01:00 #2
Hvordan ved du at det ikke virker?

Hvis det er fordi modtager ikke faar emailen, saa kan det jo vaere et spam filter problem og ikke en kode fejl.
Avatar billede janus_007 Nybegynder
17. april 2012 - 09:06 #3
Hej Katrine.

Du mangler en host / smtp-server

var minSmtp = new SmtpClient();

minSmtp.EnableSsl = true;

minSmtp.Host = ??

minSmtp.Send(minMail);

Og ja... fjern det try/ catch :) som buzzzz siger.
Avatar billede Syska Mester
17. april 2012 - 09:18 #4
SmtpClient læser vist nok fra web.config ...

Og de andre ting er der faktisk janus :-)

var minSmtp = new SmtpClient();
minSmtp.EnableSsl = true;
minSmtp.Send(minMail);
return "";

Men mon ikke hun vender tilbage når hun har prøvet de ting som er blevet foreslået.
Avatar billede ntholm Nybegynder
14. august 2012 - 13:20 #5
Brug den her metode:

public void SendMail(string to, string subject, string messageText)
        {

            SmtpClient smtp = new SmtpClient();
            MailMessage message = new MailMessage();
            message.IsBodyHtml = true;
            NetworkCredential smtpCreds = new NetworkCredential("E-MAIL", "PASSWORD");

            smtp.Host = "SMTP-ADRESSE";
            smtp.Port = PORTNUMMER;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = smtpCreds;
            // smtp.EnableSsl = true;

            MailAddress sendTo = new MailAddress(to);
            MailAddress sendFrom = new MailAddress("E-MAIL");

            message.Body = messageText;
            message.Subject = subject;
            message.IsBodyHtml = true;
            message.From = sendFrom;
            message.To.Add(sendTo);
     
            smtp.Send(message);
        }
Avatar billede ntholm Nybegynder
14. august 2012 - 13:29 #6
Du skal oprette en SMTP server.

Nej du kan ikke få den til at sende fra en anden brugers mail - for så ville du også have adgang til den brugers inbox som også skulle være SMTP klar.
Avatar billede Syska Mester
14. august 2012 - 13:38 #7
Man skal oprette en SMTP client som kontakter en Smtp server.

Du kan godt sende som en anden bruger hvis din smtp server tillader du gør det.

Der kan laves mange forskellige auth til Smtp servers som ikke nøvendigvis giver angang til mailen.

Om man må sende som en bestemt adsender er noget smtp serveren afgør ... hvis man må sende som alle, så er man et "open relay" og bør skydes :-)

mvh
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