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.
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
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 :-)
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
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?
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
<% 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
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 %>
<% '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 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 " %>>
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.
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 ?
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.
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....
Synes godt om
Ny brugerNybegynder
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.