Avatar billede cypherdenmark Nybegynder
17. august 2004 - 19:27 Der er 26 kommentarer og
1 løsning

Jmail og vedhæftning af fil hos Azero

Hej Alle

Hvordan kan man vedhæfte en fil ved brug af Jmail.

Jeg er kunde hos Azero så det skulle gerne være med deres komponenter installeret - http://azero.dk/support/programmering/asp/komponenter/

Håber der er nogle der kan hjælpe da jeg gerne vil tillade folk at vedhæfte nogle bestemte type filer (pdf,txt,doc) når der sendes en mail fra et website.

På forhånd tak
Avatar billede eagleeye Praktikant
17. august 2004 - 19:39 #1
Ligger filen på serveren eller skal den først uploades?
Avatar billede cypherdenmark Nybegynder
17. august 2004 - 19:41 #2
Den skal først uploades !
Avatar billede cypherdenmark Nybegynder
17. august 2004 - 20:52 #3
Hej eagleeye,

Kan det lade sig gøre tror du ?
Avatar billede eagleeye Praktikant
17. august 2004 - 21:22 #4
Ja jeg blev lige optaget af noget andet :)
Det var hos a-zero, de har ASPupload man kan uplaode filen med. Der er lidt i koden som skal rettes.


Her et eksempel på koden :


<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
 
  'ret brugernavn til dit brugernavn hos azero:
  Count = Upload.Save ("d:\home\brugernavn\db\")
 
  if Count>0 then
    set file1=Upload.Files("file1")
  end if
 
  navn = Upload.form("navn")
  email = Upload.form("email")

  Set JMail          = Server.CreateObject("JMail.SMTPMail")
  'REt DOMÆNE til dit domæne navn:
  JMail.ServerAddress = "websmtp.DOMÆNE.dk"
  JMail.Sender        = "admin@DOMÆNE.dk"
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "admin@DOMÆNE.dk"

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (file1.path)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    Upload.DeleteFile (file1.path)
  end if
 
  Set file1=nothing
  set upload=nothing
 
  Response.Write "Mail sendt."
end if
%>
<html>
<head></head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST" ENCTYPE="multipart/form-data">
<br>Navn: <input type="text" name="navn">
<br>Fra (email): <input type="text" name="email">
<br>Fil: <input type="file" name="file1">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede cypherdenmark Nybegynder
17. august 2004 - 21:58 #5
Umiddelbart ser det ud til at virke....

Kan man checke på at besteme filtyper kun må uploades f.eks pdf, doc, txt osv og størrelsen max må være på 8mb
Vil må få timeout hvis nu man uploader en stor fil eller vil mail først blive sendt når den er færdig med at uploade.

Jeg tester lige færdig i morgen aften, tak for hjælpen så langt.....Det er sku super :-)
Avatar billede eagleeye Praktikant
17. august 2004 - 23:20 #6
Angående størrelsen kan man sætte MaxSize (bytes) true betyder filen bliver rejectet:
Upload.SetMaxSize 8000000, True

Den linje skal ind inden .Save

Så prøv at ligge din ind sådan her:

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.SetMaxSize 8000000, True
 
  'ret brugernavn til dit brugernavn hos azero:
  Count = Upload.Save ("d:\home\brugernavn\db\")
Avatar billede eagleeye Praktikant
17. august 2004 - 23:35 #7
Det med filtyperne mente jeg også man kunne sætte direkte på upload komponenten. Så det må gøre sådan her. Prøv at lave dette styke kode om:

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
 
  'ret brugernavn til dit brugernavn hos azero:
  Count = Upload.Save ("d:\home\brugernavn\db\")
 
  if Count>0 then
    set file1=Upload.Files("file1")
  end if


Til dette, har både filtype og fil størrele med:

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.SetMaxSize 8000000, True
 
  Count = Upload.Save

  if Count>0 then
    set file1=Upload.Files("file1")
    filType = LCase(file1.Ext)
    if filType<>"pdf" and filType<>"doc" and filType<>"txt" then
      response.write "Filen har en forkert type"
      response.End
    else
'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs ("d:\home\brugernavn\db\")
    end if
  end if
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 16:48 #8
Alletiders eagleeye jeg kigger på det i aften. Tak for hjælpen så langt.....
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 17:36 #9
Hej, så fik jeg lige nogle minutter til at kigge på den. Men der er noget jeg ikke helt forstår?

Du siger SaveAs til sidst men filen skal ikke gemmes den skal sendes som vedhæftning så hvordan kommer det hele til at se ud. Kan ikke rigtigt sætte det sammen. Håber du kan eagleeye?
Avatar billede eagleeye Praktikant
18. august 2004 - 17:41 #10
For at man kan sende filen skal den ligge på serveren og derfor er man nød til at gemme den. Det gjorde det første script også i denne linje:
  Count = Upload.Save ("d:\home\brugernavn\db\")

Man filen skulle meget gerne blive slette igen i denne linje efter mailen er blevet sendt:

  if count>0 then
    Upload.DeleteFile (file1.path)
  end if
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 17:46 #11
okay, men hvordan sætter man det så hele sammen så mail også blive sendt ?
Avatar billede eagleeye Praktikant
18. august 2004 - 17:49 #12
Prøv sådan her:



<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.SetMaxSize 8000000, True
 
  Count = Upload.Save

  if Count>0 then
    set file1=Upload.Files("file1")
    filType = LCase(file1.Ext)
    if filType<>"pdf" and filType<>"doc" and filType<>"txt" then
      response.write "Filen har en forkert type"
      response.End
    else
'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs ("d:\home\brugernavn\db\")
    end if
  end if
 
  navn = Upload.form("navn")
  email = Upload.form("email")

  Set JMail          = Server.CreateObject("JMail.SMTPMail")
  'REt DOMÆNE til dit domæne navn:
  JMail.ServerAddress = "websmtp.DOMÆNE.dk"
  JMail.Sender        = "admin@DOMÆNE.dk"
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "admin@DOMÆNE.dk"

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (file1.path)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    Upload.DeleteFile (file1.path)
  end if
 
  Set file1=nothing
  set upload=nothing
 
  Response.Write "Mail sendt."
end if
%>
<html>
<head></head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST" ENCTYPE="multipart/form-data">
<br>Navn: <input type="text" name="navn">
<br>Fra (email): <input type="text" name="email">
<br>Fil: <input type="file" name="file1">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 19:01 #13
Alletiders....

Men den siger at filen har en forket filtype selvom jeg har prøvet med doc, txt ??
Avatar billede eagleeye Praktikant
18. august 2004 - 19:13 #14
Ok, Ext returnere også punktumet så prøv at rette denn linje:

    if filType<>"pdf" and filType<>"doc" and filType<>"txt" then

Til denne:

    if filType<>".pdf" and filType<>".doc" and filType<>".txt" then
Avatar billede eagleeye Praktikant
18. august 2004 - 19:14 #15
Der er faktisk lige en anden fejl .SaveAs linjen prøv at rette den fra:

'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs ("d:\home\brugernavn\db\")

Til dette:

'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs "d:\home\brugernavn\db\" & file1.FileName
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 19:31 #16
Perfekt det virker sku, men kan man ikke udskrive fejl på samme side, ligesom den siger " Mail Sendt " det ville være perfekt ?
Avatar billede eagleeye Praktikant
18. august 2004 - 20:09 #17
Jo det kan men så kommer du godt nok lige til at rette brugernavn og email adresse igen :)




<%
'Variable til at gemmer fejl tekst som skal udskrives.
fejl=""
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.SetMaxSize 8000000, True
  On Error Resume Next
 
  Count = Upload.Save
  If Err.Number = 8 Then
    fejl = "Filen er for stor."
  Else
    if Err <> 0 then Fejl = "Der opstod en fejl : " & Err.Description
  end if     
 
  if Count>0 then
    set file1=Upload.Files("file1")
    Response.Write "FilTypen: " &filType & "<br>"
    if filType<>".pdf" and filType<>".doc" and filType<>".txt" then
      fejl= "Filen har en forkert type"
    else
'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs "d:\home\brugernavn\db\" & file1.FileName
    end if
  end if

'send kun mailen hvis der ikke er fejl, enten for stor eller forkert type.
if fejl="" then
  navn = Upload.form("navn")
  email = Upload.form("email")

  Set JMail          = Server.CreateObject("JMail.SMTPMail")
  JMail.ServerAddress = "websmtp.DOMÆNE.dk"
  JMail.Sender        = "admin@DOMÆNE.dk"
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "admin@DOMÆNE.dk"

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (file1.path)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    Upload.DeleteFile (file1.path)
  end if
  Response.Write "Mail sendt."
 
end if
  Set file1=nothing
  set upload=nothing
 
  'Udskriv fejlen
  if fejl <> "" then Response.Write fejl
end if
%>

<html>
<head></head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST" ENCTYPE="multipart/form-data">
<br>Navn: <input type="text" name="navn">
<br>Fra (email): <input type="text" name="email">
<br>Fil: <input type="file" name="file1">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 20:18 #18
Hmm ja det skal jeg men det er da det mindste..... :-)

Nå man nu vælger en forket filtype siger den "Filen har en forkert type ...... " og så er form tømt.

Jeg troede at data ville blive i formen når dette skete? kan man egentligt få data til at blive der (input,select,radio osv) ?
Avatar billede eagleeye Praktikant
18. august 2004 - 20:25 #19
Så skal man gemme de data man indtaster i variable som her:
  navn = Upload.form("navn")
  email = Upload.form("email")

og så hvis der er fejl på siden tilføje value til input felterne value="<%=navn%>"
ved radio/checkbox må man tjekke om det er valgt.
Avatar billede eagleeye Praktikant
18. august 2004 - 20:33 #20
Eksempl:



<%
'Variable til at gemmer fejl tekst som skal udskrives.
fejl=""
if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.SetMaxSize 8000000, True
  On Error Resume Next
 
  Count = Upload.Save
  If Err.Number = 8 Then
    fejl = "Filen er for stor."
  Else
    if Err <> 0 then Fejl = "Der opstod en fejl : " & Err.Description
  end if     
 
  if Count>0 then
    set file1=Upload.Files("file1")
    Response.Write "FilTypen: " &filType & "<br>"
    if filType<>".pdf" and filType<>".doc" and filType<>".txt" then
      fejl= "Filen har en forkert type"
    else
'ret brugernavn til dit brugernavn hos azero:
      file1.SaveAs "d:\home\brugernavn\db\" & file1.FileName
    end if
  end if

  navn = Upload.form("navn")
  email = Upload.form("email")
  mailme = Upload.form("mailme")
  testradio = Upload.form("testradio")
 
'send kun mailen hvis der ikke er fejl, enten for stor eller forkert type.
if fejl="" then
  Set JMail          = Server.CreateObject("JMail.SMTPMail")
  JMail.ServerAddress = "websmtp.DOMÆNE.dk"
  JMail.Sender        = "admin@DOMÆNE.dk"
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "admin@DOMÆNE.dk"

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (file1.path)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    Upload.DeleteFile (file1.path)
  end if
  Response.Write "Mail sendt."
 
end if
  Set file1=nothing
  set upload=nothing
 
  'Udskriv fejlen
  if fejl <> "" then Response.Write fejl
end if
%>

<html>
<head></head>
<body>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="POST" ENCTYPE="multipart/form-data">
<br>Navn: <input type="text" name="navn" <% if fejl<>"" then Response.Write " value=""" & navn & """" %>>
<br>Fra (email): <input type="text" name="email" <% if fejl<>"" then Response.Write " value=""" & email & """" %>>
<br>En checkbox: <input type="checkbox" name="mailme" value="ok" <% if fejl<>"" and mailme<>"" then Response.Write " checked " %>>
<br>En radio: <input type="radio" name="testradio" value="1" <% if fejl<>"" and testradio="1" then Response.Write " checked " %>>
<br>En radio: <input type="radio" name="testradio" value="2" <% if fejl<>"" and testradio="2" then Response.Write " checked " %>>
<br>En radio: <input type="radio" name="testradio" value="3" <% if fejl<>"" and testradio="3" then Response.Write " checked " %>>

<br>Fil: <input type="file" name="file1">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 20:34 #21
Okay det med radio og checkbox er vist nok et andet spørgsmål så er det ikke noget med at man skal oprettet et nyt omhandlende dette, hva siger du ?
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 20:36 #22
Nå der var den med radio :-) hvad med select så ?
Avatar billede eagleeye Praktikant
18. august 2004 - 20:38 #23
Det kommer lidt an på hvordan man byggre sin select op.
Er det en "hard coded" er det i princippet det samme om en radio kanp, dog hedder en det selected:

<option value="12" <% if fejl<>"" and selectnavn="12" then Response.Write " selected " %>>Punkt nr.12</option>


er det en dynamisk som hentes fra en database kan if sætningen ligges if i det loop som udskriver <option>'s tagsne.
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 20:42 #24
Jamen hvad skal jeg sige.....Det er bare super...Lægger du ikke et velfortjent svar.....
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 20:43 #25
Kom lige til at tænke på at ville de ikke være smartere at uploade en fil inden i formen altså så der var en knap som hed upload og en knap som hed send ?
Avatar billede eagleeye Praktikant
18. august 2004 - 20:56 #26
Ja det kan man også gøre. Så skal den først vise en form hvor man kan vælge en fil. Så skal filen gemmen på serveren, formen vises og så sende mailen og slette filen tilsidst. Ulempen er at du kan risikere at der kommre nogle filer som ikke bliver slette fordi folk kun uploader og ikke sender mailen. Men det er da helt klart en mulughed.
Avatar billede cypherdenmark Nybegynder
18. august 2004 - 21:05 #27
ja det kan jeg godt se. Jeg prøver med det her til at starte med ellers må jeg oprette et nyt spørgsmål. Tak for hjælpen....
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