Avatar billede obhat Nybegynder
19. juli 2008 - 21:46 Der er 28 kommentarer og
1 løsning

Tjek af email

Er det muligt at tjekke en email og den er fungerende eller retunerer en fejl med et ASP script?
Avatar billede thesurfer Nybegynder
19. juli 2008 - 21:59 #1
Send en mail til din egen mail adresse.. hvis du får en mail, fungerer det som det skal, ellers er der noget galt.. :-)

Der er normalt en "mail.send" eller ligende der kan fortælle dig, om det er gået godt..

Hvilken mail-komponent bruger du?
Avatar billede obhat Nybegynder
20. juli 2008 - 09:04 #2
Jeg bruger denne komponent.

set Message = Server.CreateObject( "JMail.Message" )
Message.From = "noreply@mitdomaine.dk"
Message.FromName = "Obhat"
Message.Subject = "Email test"
Message.Body = "Hej en email test"
Message.AddRecipient rs("email")
Message.MSPickupDirectory = "c:\web\mail\pickup\"
Message.nq
Avatar billede thesurfer Nybegynder
21. juli 2008 - 22:46 #3
Bruger du ikke "Message.Send" ?
Hvis du gør, burde det her virke:

If Message.Send then
  ' det gik fint
Else
  ' det gik galt
End If

Man kan også bruge ".Execute" i stedet for ".Send"...


Eksempel fra http://azero.dk/support/programmering/asp/artikler/jmail/ :

Spørgsmål:
"JMail virker ikke, og jeg forstår ikke fejlmeddelsen. Hvordan debugger/logger jeg?"

Svar:
Følgende eksempel viser meget mere uddybende fejl på skærmen:
<%
  Set JMail          = Server.CreateObject("JMail.SMTPMail")

  JMail.Logging = True
  JMail.Silent = True

  JMail.ServerAddress = "websmtp.dit-domaene.dk"
  JMail.Sender        = "admin@dit-domaene.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@dit-domaene.dk"
  JMail.Priority      = 3
  JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")

  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en

  If Not JMail.Execute Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

  Set JMail = Nothing
%>
Avatar billede obhat Nybegynder
22. juli 2008 - 00:02 #4
Jeg putter alle mails i mappen pickup og sender dem derfra via mailserveren.
Det jeg så skal er at sende disse mails direkte via Jmail/ASP ??
Avatar billede thesurfer Nybegynder
22. juli 2008 - 06:05 #5
Ja, man sender dem "normalt" (i de fleste tilfælde/eksempler man ser på nettet) direkte via JMail/ASP.

Eksempel:

set Message = Server.CreateObject( "JMail.Message" )
Message.From = "noreply@mitdomaine.dk"
Message.FromName = "Obhat"
Message.Subject = "Email test"
Message.Body = "Hej en email test"
Message.AddRecipient rs("email")
Message.Send

Så kunne man erstatte linien "Message.Send" med f.eks.:

If Message.Send Then
' det gik godt, udskriv "tak for din mail"
Else
' Det gik galt, udskriv "der opstod en fejl osv.."
End If
Avatar billede obhat Nybegynder
22. juli 2008 - 09:49 #6
Super. TAK
Det prøver jeg...
Avatar billede obhat Nybegynder
22. juli 2008 - 10:11 #7
Der opstår en fejl her:

Wrong number of arguments or invalid property assignment: 'Message.Send'
Avatar billede obhat Nybegynder
22. juli 2008 - 10:59 #8
Nu kan jeg sende emails.
Men jeg har ikke kun brug for at vide om Jmail.execute er true, men også om der kommer en fejlkode retur, som f.eks 550 mailbox uavailable.

Er det muligt?
Avatar billede thesurfer Nybegynder
22. juli 2008 - 20:13 #9
Jeg kan ikke se din kode?
Avatar billede obhat Nybegynder
22. juli 2008 - 20:42 #10
Jamen jeg kører den her.

<%
  Set JMail          = Server.CreateObject("JMail.SMTPMail")

  JMail.Logging = True
  JMail.Silent = True

  JMail.ServerAddress = "websmtp.dit-domaene.dk"
  JMail.Sender        = "admin@dit-domaene.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "admin@dit-domaene.dk"
  JMail.Priority      = 3
  JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")

  ' ********** Her starter selve email-en
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"
  ' ********** Her slutter selve email-en

  If Not JMail.Execute Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

  Set JMail = Nothing
%>
Avatar billede thesurfer Nybegynder
22. juli 2008 - 21:27 #11
Det er jo netop denne del der skulle gøre det:

  If Not JMail.Execute Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

Virker det ikke?

Hvordan havde du tænkt dig, at du skulle få fejlkoden retur?
Avatar billede obhat Nybegynder
23. juli 2008 - 18:23 #12
Jamen det er jo netop det jeg ikke ved.
Det kan muligvis ikke lade sig gøre?
Avatar billede thesurfer Nybegynder
23. juli 2008 - 22:14 #13
Nu begynder du vist at blande tingene sammen..

1) Denne kode udskriver en fejlmeddelelse, hvis der opstår fejl, og "Emailen er sendt", hvis det går galt:

  If Not JMail.Execute Then
    Response.Write "ERROR MESSAGE: " & JMail.ErrorMessage & "<br/>" & vbCrLf
    Response.Write "ERROR SOURCE: " & JMail.ErrorSource & "<br/>" & vbCrLf
    Response.Write "LOG: <pre>" & JMail.Log & "</pre>" & vbCrLf
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If

2) Hvordan vil du helst modtage oplysningerne?
- Hvis fejlen er "550 mailbox unavailable", kan du godt modtage en mail, og du kan få en rapport
- Hvis fejlen er, at der overhovedet ikke kan sendes mail, kan du ikke få en rapport via mail.

Man kunne som alternativ gemme rapporten i en database, og lave en status-side, så du kun se om der har været fejl..
Avatar billede thesurfer Nybegynder
23. juli 2008 - 22:15 #14
Rettelse:

1) Denne kode udskriver en fejlmeddelelse hvis der opstår fejl, eller "Emailen er sendt" hvis det går godt:
Avatar billede obhat Nybegynder
24. juli 2008 - 17:09 #15
Okay.:-)

Jeg vil netop gerne have profilen i databasen opdateret, hvis scriptet retunere fejlen "550 mailbox unavailable".
Avatar billede thesurfer Nybegynder
25. juli 2008 - 00:45 #16
- Hvordan ser din database ud? Skriv tabelnavnene, kolonnenavnene, kolonnetyperne, hvad de skal bruges til

- Hvad skal opdateres, og hvad skal profilerne opdateres til?
Avatar billede obhat Nybegynder
25. juli 2008 - 00:54 #17
Der er en lang række ting der skal opdateres, indskrives mv. i databasen, men hvis bare du skriver hvor i scriptet, så tilføjer jeg det efterfølgende.
Avatar billede thesurfer Nybegynder
25. juli 2008 - 01:15 #18
If Not JMail.Execute Then
    ' Der gik et eller andet galt.
    ' Undersøg om fejlbeskrivelsen indeholder "550 mailbox unavailable":
    If InStr(JMail.ErrorMessage, "550 mailbox unavailable") > 0 Then
      ' Yep, fejlbeskrivelsen indeholder "550 mailbox unavailable", opdater profil her
    Else
      ' Det var ikke "550 mailbox unavailable", men en anden fejl.. gør noget andet her
    End If
  Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If
Avatar billede obhat Nybegynder
25. juli 2008 - 07:29 #19
Okay. Det ligner noget:-)
Tester lige og vender tilbage..
Avatar billede obhat Nybegynder
25. juli 2008 - 07:59 #20
Nej. Der er noget galt.:(
Uanset hvad jeg skriver i JMail.AddRecipient, vises scriptet at mailen er sendt ok, hvilket ikke kan passe.

Feks.

<%
Set JMail = Server.CreateObject("JMail.SMTPMail")

  JMail.Logging = True
  JMail.Silent = True

  JMail.ServerAddress = "websmtp.mitdomaine.dk"
  JMail.Sender        = "info@mitdomaine.dk"
  JMail.Subject      = "Information"
  JMail.AddRecipient  "inf@blaxxxzt.dkxom"
  JMail.Priority      = 3
  JMail.AddHeader    "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
  JMail.Body = "Dette er linie 1 af brevet" & vbCrLf &_
              "Og her kommer linie 2"


If Not JMail.Execute Then
    'response.write("Der gik et eller andet galt.")
    'Undersøg om fejlbeskrivelsen indeholder "550 mailbox unavailable":
    If InStr(JMail.ErrorMessage, "550 mailbox unavailable") > 0 Then
      response.write ("Yep, fejlbeskrivelsen indeholder 550 mailbox unavailable, opdater profil her")
    Else
      response.write ("Det var ikke 550 mailbox unavailable, men en anden fejl.. gør noget andet her")
    End If
Else
    Response.Write "<html><body>Emailen er sendt!</body></html>" 
  End If


  Set JMail = Nothing
%>
Avatar billede obhat Nybegynder
25. juli 2008 - 08:31 #21
Kan det evt. skyldes en opsætning at windows smtp, eller mailserveren?
Avatar billede thesurfer Nybegynder
25. juli 2008 - 14:36 #22
Hmm.. det ved jeg faktisk ikke..

Du kunne prøve at gøre sådan (indsæt disse linier lige før linien "Set JMail = Nothing"):


response.write "<hr>"
response.write "fejlbeskrivelse?: " & JMail.ErrorMessage & "<br>"
response.write "fejlkilde?: " & JMail.ErrorSource & "<br>"
response.write "fejllog?: " & JMail.Log

  Set JMail = Nothing


Du skriver den så noget, på de linier, efter "?:" ?
Avatar billede obhat Nybegynder
25. juli 2008 - 18:27 #23
Det giver følgende resultat:

Emailen er sendt!
--------------------------------------------------------------------------------
fejlbeskrivelse?:
fejlkilde?:
fejllog?: .execute() { Trying server mail:websmtp.profiler.dk <- 220 127.0.0.1 ArGoSoft Mail Server Pro for WinNT/2000/XP, Version 1.8 (1.8.3.5) -> EHLO mailserver <- 250-Welcome, 85.115.331.218 [85.115.331.218], pleased to meet you 250-SIZE 104857600 250 HELP -> MAIL FROM: <- 250 Sender "info@profiler.dk" OK... -> RCPT TO:blablaxxxx@gmailhg.hchom <- 250 Recipient "blablaxxxx@gmailhg.hchom" OK... -> DATA <- 354 Enter mail, end with "." on a line by itself Sending headers... Sending body... Message sent <- 250 Message accepted for delivery. <7ane5oe2tzlu3nn.250720081823@127.0.0.1> 0 of 1 servers failed }
Avatar billede thesurfer Nybegynder
25. juli 2008 - 19:42 #24
Du skal lige have checket post hos afsenderen (info @ profiler.dk).

Du har garanteret fået et par "mail kunne ikke leveres"-mails..

Ellers ser det ud som om at mailen sendes ud.. så jeg ved ikke hvad man kan gøre ved det..
Avatar billede obhat Nybegynder
25. juli 2008 - 19:50 #25
Jeg får godt nok alle mail retur med "Domain name does not exist".
Avatar billede thesurfer Nybegynder
25. juli 2008 - 21:50 #26
Hvis JMail ikke når at opfange at der er noget galt (f.eks. "Domain name does not exist"), inden den sender mailen afsted, er der vel ikke så meget man kan gøre.

Hvis du har mulighed for at afvikle kode, når mailkontoen "info" får mails, kunne du f.eks. sende brugerid i mailen til brugeren. Hvis du får en "Domain name does not exist" mail retur, aflæser du brugerid som var sendt med, hvilket gør at du kan opdaterer profilen der.

Men som sagt kræver det at du, på en eller anden måde, kan afvikle noget kode, når "info" modtager mails..
Avatar billede obhat Nybegynder
26. juli 2008 - 01:31 #27
Tja. det kan jeg ikke.
Det vil kræve at jeg sætter det hele op til noget webmail, og så bliver det en større sag.:(
Avatar billede thesurfer Nybegynder
02. august 2008 - 13:09 #28
For en sikkerhedsskyld: Jeg vil lige sige, at jeg desværre ikke har flere forslag..
Avatar billede obhat Nybegynder
03. august 2008 - 10:06 #29
Ok lukker spg.
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
Kurser inden for grundlæggende programmering

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