Pj avec mail...

vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 17 avril 2009 à 09:28
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 20 avril 2009 à 18:50
En espérant être dans le bon thème...
Voilà, il faut que je fasse une page de contact sur un site, avec pièce jointe...

J'ai mis ça pour que l'on puisse aller chercher le fichier :

Le chemin du fichier apparait bien dans le champ.

Seulement... ensuite je fais quoi, je ne sais pas quoi faire après.
Qq'un pourrait-il m'aider? La plupart des trucs que je trouve sont orientés PHP et franchement, c du chinois quoi.
Merci d'avance de vos lumières.

13 réponses

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
17 avril 2009 à 10:01
bonjour,
Il faut utiliser (il y a des exemples dans la doc msdn) le membre Attachments de la classe  
Net.Mail.MailMessage
Ca marche bien
SuperBouly
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
17 avril 2009 à 12:14
Ok merci SuperBouly, je vais voir ça tout de suite  !!!
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
17 avril 2009 à 15:23
euh... hm... j'ai fait ce test : (un extrait de ma page "envoisok")

    Set objMessage = server.CreateObject("CDO.Message")

    Set objMessage.Configuration = objConfig
    With objMessage
        .To = "guguganmo@machinbidule.fr"
        if sBCC<>"" then
            .bCC = sBCC
        end if
        .From = zemail
        .Subject = "Candidature"
        .HTMLBody = "Nom du candidat : " + zenom + "
" + " - Niveau d'étude : " + zeniveau + "
" + " - Poste souhaité : " + zeposte + "
" + " - Message joint : " + zemessage
        .AddAttachment = zefichier
        .Send
    End With

"zefichier" étant signalé plus haut, par "zefichier = Request("theFile")" où theFile est le nom du champ où s'affiche le chemin du fichier...

mais j'ai cça qui s'affiche et j'ai aucun fichier d'envoyé :O
"Cette erreur (HTTP 500 Erreur interne au serveur)
signifie que le site Web que vous visitez a rencontré un problème de serveur qui
a empêché l’affichage de la page Web."

pour le terme spécifique "Net.Mail.MailMessage
" je cherche !! :)
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
17 avril 2009 à 16:29
attention, par défaut, je me suis situé  framework 2.0 ou 3.5
Cette classe n'existait pas je crois en asp.
Quand tu poses une question, précise un peu tout ça: environnement de développement, langage etc....
SuperBouly
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
17 avril 2009 à 16:34
Dsl pour le côté flou de ma question, je me renseigne et je reviens avec les infos... cela dit, lundi, là je quitte mon taf :).
bon weekend !!
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
18 avril 2009 à 08:32
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
18 avril 2009 à 10:13
Pas de framework en ASP3.
Pour avoir une erreur plus précise, va dans Outils -> Options -> Avancé -> Afficher les messages d'erreur HTTP simplifiés (ou quelque chose comme ça, moi j'ai XP EN)
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
20 avril 2009 à 09:46
euh, bon alors avec le code que j'ai mis, j'ai ça kan j'essais d'envoyer le truc :

The page cannot be displayed
You have attempted to execute a CGI, ISAPI,
or other executable program from a directory that does not allow programs to be
executed.
<hr />Please try the following:

<li>Contact the Web site administrator if you believe this directory should
allow execute access. </li>HTTP Error 403.1 - Forbidden: Execute access is denied.
Internet
Information Services (IIS)
<hr />Technical Information (for support personnel)

<li>Go to 8180 Microsoft
Product Support Services
and perform a title search for the words
HTTP and 403.
</li><li>Open IIS Help, which is accessible in IIS Manager (inetmgr), and
search for topics titled Configuring ISAPI Extensions, Configuring CGI
Applications, Securing Your Site with Web Site Permissions, and
About Custom Error Messages.
</li><li>In the IIS Software Development Kit (SDK) or at the =8181 MSDN Online Library,
search for topics titled Developing ISAPI Extensions, ISAPI and
CGI, and Debugging ISAPI Extensions and Filters. </li>
sinon eh bien j'utilise dreamweaver 8 pour faire mes pages html et asp...
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
20 avril 2009 à 12:02
bon, alors ça fonctionne quelqu'un de mon entourage pro m'a aider et finalement ça marche dans le sens où on peut envoyer un mail avec une pièce jointe... "si" le fichier se trouve déjà sur le serveur, ce qui inclu d'uploader le fichier "avant" d'envoyer le mail...
J'ai donc maintenant un code pour envoyer , et un code pour uploader, il faut que je rassemble les deux...
je fais des essais...
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
20 avril 2009 à 14:25
... ça marche pas il m'indique les lignes erronnées mais après "correction", rien ne semble fonctionner davantage... comment il fa ut faire pour combiner les deux codes svp?

voilà le code qui permet d'uploader
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
        <title>Upload ASP</title>
        <style type="text/css">
<!--
.style1 {    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #5067C5;
}
.style10 {font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #2C345F; }
.style38 {    font-size: 12px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    color: #5570C9;
}
.style40 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #FFFFFF; font-weight: bold; }
-->
        </style>
</head>

Votre fichier ne doit pas d&eacute;passer 190ko !!
<form method="post" ENCTYPE="multipart/form-data">
&nbsp;
</form>

  <%

'*****************************************************
'* fonction qui permet de recup le nom du fichier
'*****************************************************

Function GetFileName(aField)
    Dim x2, i
    x = Instr(requestData, rLine & "Content-Disposition: form-data; name=" & Chr(34) & aField & Chr(34))
    x = Instr(x, requestData, "filename=" & Chr(34))
    x2 = Instr(x, requestData, vbCrLf)
    For i = x2 To x Step -1
        If Mid(requestData,i,1) = "" Then
            x = i - 9
            Exit For
        End If
    Next
    GetFileName = Mid(requestData, x+10, x2-(x+11))
End Function

'*****************************************************
'* exemple pour recup value d'un champ supplementaire
'*****************************************************

Function GetName(aField)
    Dim x,x1,x2
    x = Instr(requestData, rLine & "Content-Disposition: form-data; name=" & Chr(34) & aField & Chr(34))
    if x<>"0" then
     x2 = Instr(x, requestData, vbCrLf) 'debut ligne qui contient CR (sur x)
     x = Instr(x2+1, requestData, vbCrLf) 'cherche debut value
     x1 = Instr(x+3, requestData, vbCrLf) 'cherche fin value
     GetName = Mid(requestData, x,x1-x)
    else
     GetName =  aField & " : not found"
    end if
End Function

'*****************************************************
'* fonction qui permet de recup le data du fichier
'*****************************************************

Function GetFileData(aField)
    Dim x2
    x = Instr(requestData, rLine & "Content-Disposition: form-data; name=" & Chr(34) & aField & Chr(34))
    x = Instr(x, requestData, vbCrLf)
    x = Instr(x+1, requestData, vbCrLf)
    x = Instr(x+1, requestData, vbCrLf) + 2
    x2 = Instr(x, requestData, Left(rLine,Len(rLine)-2))
    GetFileData = Mid(requestData, x+2, x2-x-4)
End Function

'*****************************************************
' fonction qui permet de recup le content-type
'*****************************************************

Function GetContentType(aField)
    Dim x,x2
    x = Instr(requestData, rLine & "Content-Disposition: form-data; name=" & Chr(34) & aField & Chr(34))
    x = Instr(x, requestData, "Content-Type:")
    x2 = Instr(x, requestData, vbCrLf)
    GetContentType = Mid(requestData, x+13, x2-(x+13))
End Function

'*****************************************************
' test si le formulaire est validé
'*****************************************************

if Request.TotalBytes <> 0 then

 'recup des donnees du formulaire
 RequestBin = Request.BinaryRead(Request.TotalBytes)

 if LenB(RequestBin) < 900000 then
 'convertion unicode vers ascii
 For i = 1 To LenB(RequestBin)
  requestData = requestData & Chr(AscB(MidB(RequestBin, i, 1)))
 Next
 
 'recup de la signature (hash) 
 rLine = Left(requestData, Instr(requestData,vbCrLf)+1)
filename = Server.MapPath(".") & "\LesFichiers" & GetFileName("theFile")
 'creation du fichier
 Set FSO = server.CreateObject("Scripting.FileSystemObject")
 Set TS = FSO.CreateTextFile(filename, True, False)
 TS.Write GetFileData("theFile")
 TS.Close
 
' response.write "fichier enregistrer sur : " & filename
' response.write "Merci. Le fichier est enregistré !"
' else
' response.write "Attention : La taille est limitée à 190Ko !!"
 end if

end if
%>

&nbsp;

</html>

... le truc de la page formulaire :

                  ----

                    <table width="600" height="20" border="0" cellpadding="0" cellspacing="0">
                        ----

                         , 2. Contactez-nous</td>
                          info@tructruc.fr,
                       
                   
</td>
                  </tr>
                  <tr>
                    <td align="center" valign="top" background="mailb.png">
<form action="envoisdumessageok.asp" method="post" name="form2" id="form2">

          ----

            Nom, Pr&eacute;nom,
            ,
         
          ----

            Truc,
            <select name="Poste" class="style38" id="Poste" >
              <option>Choisissez le truc que vous voulez !!</option>
              <option value="aaa">Poste n&deg; 1 -a</option>
              <option value="bbb">Poste n&deg; 2 - b</option>
              <option value="ccc">Poste n&deg; 3 - c</option>
              <option value="ddd">Poste n&deg; 4 - d</option>
              <option value="eee">Poste n&deg; 5 - e</option>
                                                                                                                        </select>,
         
          ----

            Adresse,
            ,
         
          ----

            E-mail,
            ,
         
          ----

            Message ,
            <textarea name="Message" cols="35" rows="5" width="500"></textarea>,
         
          ----

            &nbsp;,
            ,
         
       

      </form>
                    </tr>
                  <tr>
                    <td align="center" valign="top" background="mailbas.png">&nbsp;

                      </td>
                  </tr>
              </table>

et le code de mail avec la ligne qui permet d'envoyer un fichier "déjà" sur le server :
<%
function WriteToFile(FileName, Contents, Append)
on error resume next

if Append = true then
   iMode = 8
else
   iMode = 2
end if
set oFs = server.createobject("Scripting.FileSystemObject")
set oTextFile = oFs.OpenTextFile(FileName, iMode, True)
oTextFile.Write Contents & vbcrlf
oTextFile.Close
set oTextFile = nothing
set oFS = nothing

end function

%>
<%
'dim textfile as string
textfile =Request.ServerVariables("PATH_TRANSLATED") &".txt"
'response.Write textfile
WriteToFile textfile, now, True
zenom = Request("Nom")
zeposte = Request("Poste")
zeadresse = Request("Adresse")
zemail = Request("Email")
zemessage = Request("Message")
zefichier = Request("theFile")

WriteToFile textfile, zenom, True
WriteToFile textfile, zeposte, True
WriteToFile textfile, zeadresse, True
WriteToFile textfile, zemail, True
WriteToFile textfile, zemessage, True
WriteToFile textfile, zefichier, True

    Const cdoSendUsingMethod =     "http://schemas.microsoft.com/cdo/configuration/sendusing"
    Const cdoSendUsingPort = 2
    Const cdoSMTPServer =     "http://schemas.microsoft.com/cdo/configuration/smtpserver"
    Const cdoSMTPServerPort =     "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
    Const cdoSMTPConnectionTimeout =     "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
    Const cdoSMTPAuthenticate =     "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
    Const cdoBasic = 1
    Const cdoSendUserName =     "http://schemas.microsoft.com/cdo/configuration/sendusername"
    Const cdoSendPassword =     "http://schemas.microsoft.com/cdo/configuration/sendpassword"

    Dim objConfig  ' As CDO.Configuration
    Dim objMessage ' As CDO.Message
    Dim Fields     ' As ADODB.Fields

    ' Get a handle on the config object and it's fields
    Set objConfig = Server.CreateObject("CDO.Configuration")
    Set Fields = objConfig.Fields

    ' Set config fields we care about
    With Fields
            .Item(cdoSendUsingMethod) = cdoSendUsingPort
            .Item(cdoSMTPServer) =  *******
            .Item(cdoSMTPServerPort) =  *******
            .Item(cdoSMTPConnectionTimeout) =  *******
            .Item(cdoSMTPAuthenticate) = cdoBasic
            .Item(cdoSendUserName) =  *******
            .Item(cdoSendPassword) = *******
            .Update
    End With
    Set objMessage = server.CreateObject("CDO.Message")

    Set objMessage.Configuration = objConfig
    With objMessage
        .To = "moi@encoremoi.fr"
        if sBCC<>"" then
            .bCC = sBCC
        end if
        .From = zemail
        .Subject = "Message truc"
        .HTMLBody = "Nom : " + zenom + "
" + " - Adresse : " + zeadresse + "
" + " - Poste truc : " + zeposte + "
" + " - Message : " + zemessage
        .AddAttachment(Server.MapPath(".") & "\lesFichiers" & filename = Server.MapPath(".") & "\LesFichiers" & GetFileName("theFile"))

        .Send
    End With

WriteToFile textfile, "fin" & now, True
    Set Fields = Nothing
    Set objMessage = Nothing
    Set objConfig = Nothing

'Response.Write "&server_mes=ok"
'%>

Si vous pouviez m'indiquer où mettre les infos... j'ai donc 3 fichiers à mélanger...
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
20 avril 2009 à 14:51
au fait, tu ne peux vraiment pas migrer vers asp.net 2.0 ou 3.5 ?
ce serait vraiment + simple ! Il s'y trouve des controles et des classes faites pour ça !
SuperBouly
0
vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022
20 avril 2009 à 15:15
Apparement ici c'est ASP et point barre... :/ :) sinon je c pas trop, étant donné que le Dreamweaver est le 8 et que le copyright va de 97 à 2005, l'asp que j'utilise doit dater de 2005, et c'est donc... (je zieute sur le net)... bon, je trouve pas mais c vieux, on a qu'à dire ça !! c merveilleux mdr... dsl, rire nerveux... hm
Sinon, j'ai pu mettre les deux "codes" sur la meme feuille et ça bug plus, je peux uploader trankil... car... j'ai mis... (je sais que c'est pas bien) une iframe qui charge la fenetre d'upload...
(je fais avec ce que j'ai, au niveau matos et au niveau cerveau) donc...
une fois que le fichier est chargé il est apparement stocké dans une "variable" nommée "filename"...
Comment faut-il faire pour la récupérer sur la page d'envois du mail?...
hm... petit résumé :

il y a  une feuille :
- uploadASP (c elle qui upload le fichier sur le server)
- la page de formulaire (qui comporte une iframe où s'affiche la page upload et donc en "apparence", ça fait style la meme page...)
- puis la dernière une page asp qui contient un texte genre "ok ça roule le truc est parti", et qui comporte à l'intérieur les "rappels" de variables machins issues de la page formulaire...

C'est dans cette page numéro 3 que je dois mettre "filename" normalement ?! et où.?... il faut sans doute la déclarer plus haut, mais je ne sais pas trop comment en fait...
navré ces questions doivent paraitre toutes betes mais pour moi y'a de quoi se jeter par la fenetre, rouler sur une voiture et finir sous un pont manger par des poissons 8D (oups, encore un rire nerveux...)

...
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 avril 2009 à 18:50
Pour utiliser le nom du fichier dans la page 3, il suffit que la précédente envoie ce dernier en GET, ça fera l'affaire.
Du genre :
Response.Redirect "stage3.asp?FileName.xyz"

@ [auteur/SUPERBOULY/224875.aspx SuperBouly] : Faut encore connaître le langage qui n'est pas simple à comprendre quand on vient d'ASP3 ...
Et quand on a tout un site en ASP3, on a pas forcément envie de passer à un truc plus lourd et plus lent !
0
Rejoignez-nous