Avatar billede jr40 Nybegynder
16. april 2006 - 18:39 Der er 30 kommentarer og
1 løsning

Jmail med vedhæftet fil. anyone?

Hejsa

Nu har jeg søgt en del her inde på eksperten.dk efter et Jmail script som kan vedhæfte en fil eller flere, men har ikke kunne finde noget som virker, så jeg håber i kan hjælpe...

Jeg skal bruge et alm. Jmail script hvor man kan skrive flg:
Navn:
Email:
og mulighed for at tilføje 1-4 billeder til mailen.

Jeg har disse her komponenter på min server:
JMail, ASPsmartupload og w3Sockets.

Altså er der nogle som kan hjælpe med et Jmail script med vedhæftning af 4 billeder/filer.?
Avatar billede thesurfer Nybegynder
16. april 2006 - 18:56 #1
1) Brug ASPsmartupload til at uploade billederne
2) Vedhæft alle filerne, som nu ligger "lokalt" på serveren

JMail attachment: http://host.cdesystems.com/faq/jmail_asp_online_manual.asp#AddAttachment

/theSurfer
Avatar billede jr40 Nybegynder
16. april 2006 - 18:58 #2
Thesurfer, jeg har dette her script men det virker bare ikke...  Kan du evt. se hvad der er galt.?

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

  Set Upload = Server.CreateObject("Persits.Upload.1")
 
  'ret brugernavn til dit brugernavn hos azero:
  Count = Upload.Save ("har jeg rettet rigtigt til.")
 
  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 = "har jeg rettet rigtigt til."
  JMail.Sender        = "har jeg rettet rigtigt til."
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "har jeg rettet rigtigt til."

  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 thesurfer Nybegynder
16. april 2006 - 19:02 #3
Hvilken fejl får du?

/theSurfer
Avatar billede jr40 Nybegynder
16. april 2006 - 19:05 #4
siden kan ikke vises
se her:
http://www.basket-kort.dk/email.asp
Avatar billede thesurfer Nybegynder
16. april 2006 - 19:09 #5
Jeg får fejlen:

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/email.asp, line 4

Invalid ProgID. For additional information specific to this message please visit the Microsoft Online Support site located at: http://www.microsoft.com/contentredirect.asp.


Du skal lige slå "vis uskadelige besked" (eller noget) fra/til.. :-)

Kan ikke huske hvad det hedder..

/theSurfer
Avatar billede thesurfer Nybegynder
16. april 2006 - 19:11 #6
Menuen Funktioner > Internetindstillinger > Avanceret > Fjern hak i "Vis meddelelser om uskadelige HTTP-fejl"

/theSurfer
Avatar billede jr40 Nybegynder
16. april 2006 - 19:13 #7
tak :)
den siger som sagt fejl i linje 4:
  Set Upload = Server.CreateObject("Persits.Upload.1")

Hmm men jeg tror faktisk ikke den der persits upload er understøttet på min server,, så der må vel være et alt. til den upload.?
Avatar billede thesurfer Nybegynder
16. april 2006 - 19:15 #8
Ahh.. Persits er jo ikke ASPsmartupload..

Du skal bruge noget der ligner:

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

/theSurfer
Avatar billede thesurfer Nybegynder
16. april 2006 - 19:16 #9
Avatar billede jr40 Nybegynder
16. april 2006 - 19:43 #10
Så har jeg næsten fået tricket den... (Den virker nu med 1 vedhæftet fil.)
Dog mangler jeg hjælp til af få den ændret til 4 filer som man skal kunne sende afsted ad gang...  Maybe du kan se hvad jeg skal gøre.?

Du kan evt. teste den med 1 vedhæftet fil her:
http://www.basket-kort.dk/email.asp

scriptet ser sådan her ud nu:

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

  Set Upload = Server.CreateObject("aspSmartUpload.SmartUpload")

  Upload.Upload

  'ret brugernavn til dit brugernavn hos azero:
  sti = "d:\www\rettet.dk_d0mjyevqnv\public_html\uploadet_billeder\"
  Count = Upload.Save (sti)
 
  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 = "mail.rettet.dk"
  JMail.Sender        = "info@rettet.dk"
  JMail.Subject      = "Måske en fil til dig"
  JMail.AddRecipient  "info@rettet.dk"

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (sti & file1.FileName)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    'ASPSmartUpload kan ikke slette filen selv så det må FSO gøre:
    'Upload.DeleteFile (file1.path)
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    fs.DeleteFile(sti&file1.FileName)
    set fs=nothing
  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" size="20">
<br>Fra (email): <input type="text" name="email" size="20">
<br>Fil: <input type="file" name="file1" size="20">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede thesurfer Nybegynder
16. april 2006 - 20:00 #11
Avatar billede jr40 Nybegynder
16. april 2006 - 23:54 #12
hmm jeg kan sku ikke lige tricke den.

Hvis f.eks. laver 4 x input felter
<br>Fil: <input type="file" name="file1" size="20">
<br>Fil: <input type="file" name="file1" size="20">
<br>Fil: <input type="file" name="file1" size="20">
<br>Fil: <input type="file" name="file1" size="20">

Så for man denne her fejl, når man prøver det af:
aspSmartUpload error '800a01c9'

This key is already associated with an element of this collection

/email.asp, line 6
se her:
http://www.basket-kort.dk/email.asp
Avatar billede thesurfer Nybegynder
17. april 2006 - 11:57 #13
Det du ikke lagde mærke til i eksemplet, var at hvert upload-felt har sit eget navn :-)

file1, file2, file3, file4.

Du har bare 4x file1.. :-)

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 12:56 #14
Præcis,
jeg har også prøvet af skrive file1 2 osv..
men jeg ved ikke hvad jeg skal skrive i asp koden, før det vil virke med alle 4 felter.
Avatar billede thesurfer Nybegynder
17. april 2006 - 13:53 #15
Hmm.. jeg har lige downloadet og testet aspSmartUpload.. det virker fint med 4 uploads (sample 1)..

Jeg samler lige koden, og submitter den her..

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 13:59 #16
Min test er udført således:

sti: C:\Inetpub\wwwroot\testupload
form: C:\Inetpub\wwwroot\testupload\index.htm
upload-script: C:\Inetpub\wwwroot\testupload\upload.asp

Jeg bruger mySmartUpload.Save(".") til at putte de uploadede filer, i samme mappe som formen og upload-scriptet.

form:
<HTML>
<BODY BGCOLOR="white">

<H1>aspSmartUpload : Sample 1</H1>
<HR>

<FORM METHOD="POST" ACTION="upload.asp" ENCTYPE="multipart/form-data">
  <INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
  <INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
  <INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
  <INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
  <INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>

</BODY>
</HTML>

upload-script:
<HTML>
<BODY BGCOLOR="white">

<H1>aspSmartUpload : Sample 1</H1>
<HR>

<%
'  Variables
'  *********
  Dim mySmartUpload
  Dim intCount
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Upload
'  ******
  mySmartUpload.Upload

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
  intCount = mySmartUpload.Save(".") ' /aspSmartUpload/Upload
  ' sample with a physical path
  ' intCount = mySmartUpload.Save("c:\temp\")

'  Display the number of files uploaded
'  ************************************
  Response.Write(intCount & " file(s) uploaded.")
%>
</BODY>
</HTML>

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 14:08 #17
Helt korrrekt, det upload script har jeg også prøvet på min server og det virker helt fint... Men jeg ved stadigvæk ikke hvordan jeg skal smide det ind i mit jmail script. :/
Avatar billede thesurfer Nybegynder
17. april 2006 - 14:29 #18
Ifølge http://www.aspsmart.com/aspSmartUpload/liblocal/docs/FileObject.htm#File skulle du kunne bruge:

MyUpLoad.Files.Item(X).FilePathName

eller:

MyUpLoad.Files.Item(X).FileName
Egentligt kender du jo allerede mappen hvortil filerne uploades (i mit eksempel, nuværede = ".")..

Jeg er erstattet indexnummeret med "X".

Eksempel på en loop, der looper de uploaded filer igennem:

<HTML>
<BODY BGCOLOR="white">

<H1>aspSmartUpload : Sample 1</H1>
<HR>

<%
'  Variables
'  *********
  Dim mySmartUpload
  Dim intCount
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Upload
'  ******
  mySmartUpload.Upload

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
  intCount = mySmartUpload.Save(".") ' /aspSmartUpload/Upload
  ' sample with a physical path
  ' intCount = mySmartUpload.Save("c:\temp\")

'  Display the number of files uploaded
'  ************************************

for i = 1 to mySmartUpload.files.count
filnavn = mySmartUpload.files.item(i).FileName
if filnavn <> "" then response.write "denne fil er uploadet: " & filnavn & "<br>"
next
response.write"antal uploadet filer: " & intCount & "<br>"
response.write "max antal uploads (antallet af FILE-felter): " & mySmartUpload.files.count & "<br>"

%>
</BODY>
</HTML>

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 14:31 #19
Eksempel på integrering af JMail-attacht-koden:

for i = 1 to mySmartUpload.files.count
filnavn = mySmartUpload.files.item(i).FileName
if filnavn <> "" then
    response.write "denne fil er uploadet: " & filnavn & "<br>"
    JMail.AddAttachment ("sti til upload-mappe med sidste\" & filnavn)
end if
next

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 14:41 #20
Jeg er som sagt ikke hardcore på dette område, og er derfor ikke helt sikker på af jeg har sat det rigtigt op, da den kommer med denne her fejl.

denne fil er uploadet: 22_Stor_Forside.jpg

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/email.asp, line 29






email.asp ser sådan her ud nu:
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
'  Variables
'  *********
  Dim mySmartUpload
  Dim intCount
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Upload
'  ******
  mySmartUpload.Upload

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
  intCount = mySmartUpload.Save(".") ' /aspSmartUpload/Upload
  ' sample with a physical path
  ' intCount = mySmartUpload.Save("d:\www\xxx.dk_d0mjyevqnv\public_html\uploadet_billeder\")

'  Display the number of files uploaded
'  ************************************

for i = 1 to mySmartUpload.files.count
filnavn = mySmartUpload.files.item(i).FileName
if filnavn <> "" then
    response.write "denne fil er uploadet: " & filnavn & "<br>"
    JMail.AddAttachment ("d:\www\xxx.dk_d0mjyevqnv\public_html\uploadet_billeder\" & filnavn)
end if
next
response.write"antal uploadet filer: " & intCount & "<br>"
response.write "max antal uploads (antallet af FILE-felter): " & mySmartUpload.files.count & "<br>"

 
  navn = Upload.form("navn")
  email = Upload.form("email")

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

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email
 
  if Count>0 then
    JMail.AddAttachment (sti & file1.FileName)
  end if
  JMail.Execute
 
  Set JMail = Nothing
 
  if count>0 then
    'ASPSmartUpload kan ikke slette filen selv så det må FSO gøre:
    'Upload.DeleteFile (file1.path)
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    fs.DeleteFile(sti&file1.FileName)
    set fs=nothing
  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" size="20">
<br>Fra (email): <input type="text" name="email" size="20">
<br>Fil: <input type="file" name="file1" size="20">
<br>Fil: <input type="file" name="file2" size="20">
<br>Fil: <input type="file" name="file3" size="20">
<br>Fil: <input type="file" name="file4" size="20">
<br><input type="submit" name="send" value="send">
</form>
</body>
</html>
Avatar billede thesurfer Nybegynder
17. april 2006 - 15:08 #21
Det er fordi du prøver på at tilgå  JMail.AddAttachment FØR du overhovedet opretter objectet JMail..

Rækkefølgen er kritisk..

Eksempel:

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
  intCount = mySmartUpload.Save(".") ' /aspSmartUpload/Upload

  navn = Upload.form("navn")
  email = Upload.form("email")

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

  JMail.Body = "En mail fra : " & navn & " og brugeren har denne email adresse : " & email

for i = 1 to mySmartUpload.files.count
filnavn = mySmartUpload.files.item(i).FileName
if filnavn <> "" then
    response.write "denne fil er uploadet: " & filnavn & "<br>"
    JMail.AddAttachment ("d:\www\xxx.dk_d0mjyevqnv\public_html\uploadet_billeder\" & filnavn)
end if
next


osv..

Så kan du fjerne denne kode:

  if Count>0 then
    JMail.AddAttachment (sti & file1.FileName)
  end if

Husk at lukke sende mail og fjerne objekterne korrekt (set objektnavnet = nothing)

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 15:20 #22
Hey thesurfer,
Jeg er ikke kommet et skridt nærmere end løsning med de 4 felter, så jeg må nøjes med det ene felt.
Kan ses her:
http://www.basket-kort.dk/email.asp
Avatar billede thesurfer Nybegynder
17. april 2006 - 15:34 #23
Hvordan ser din JMail.AddAttachment kode ud?

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 15:35 #24
Den ser ud som ovenstående da jeg jo ikke ved hvad jeg skal skrive.
Avatar billede thesurfer Nybegynder
17. april 2006 - 15:36 #25
Sådan: http://www.dimac.com/Products/w3Upload/Examples/form.htm

Eksemplet opretter et objekt til at indeholde den oploaded fil..
Jeg laver et teoretisk eksempel lige om lidt..

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 15:39 #26
Du kan starte med at teste koden:

for i = 0 to upload.form.count-1
if upload.form(i).isFile then
  set attachment = upload.Form(i)
  JMail.AddCustomAttachment attachment.filename, attachment.item
else
  JMail.appendtext(upload.form(i).name & ": " & upload.form(i).item & vbcrlf)
end if
next

Denne loop erstatter en evt attach-kodeblok du måtte have.

Husk at fjerne din tidligere kode, hvis den stadigvæk eksisterer:

  if Count>0 then
    JMail.AddAttachment (sti & file1.FileName)
  end if

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 15:52 #27
Ang 17/04-2006 15:39:41:

Du skal lige rette navnene til..

/theSurfer
Avatar billede jr40 Nybegynder
17. april 2006 - 17:42 #28
Hvordan vil du præcist have at email.asp skal se ud.?
Avatar billede thesurfer Nybegynder
17. april 2006 - 17:56 #29
- Åben/Opret upload-object
- Åben/Opret JMail-object
- Loop_Start til uploadede filer
- Tilføj filer til attachment til JMail
- Loop_Slut til uploadede filer
- Luk upload-objekt (sættes til nothing)
- Send mail
- Luk JMail-objekt (sættes til nothing)

/theSurfer
Avatar billede jr40 Nybegynder
02. juli 2007 - 00:13 #30
lukker
Avatar billede thesurfer Nybegynder
02. juli 2007 - 00:18 #31
Hvorfor lukker du?
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