2017-05-02 1 views
2

Je cherchais une solution depuis quelques jours. Je ne suis pas un programmeur de .net mais j'essaye d'aider quelqu'un avec leur code. Je dois joindre un fichier téléchargé via input type = fichier à partir d'un formulaire HTML form.The Html ressemble à ce qui suit (je l'ai supprimé toutes les autres balises pour garder le code court)Comment envoyer une valeur de fichier d'entrée Html en pièce jointe dans l'e-mail C# .net

<form method="post" enctype="multipart/form-data" > 
     <label for="attachAdd">Attach copies of Identification:</label><span>(REQUIRED)</span> 

     <input type="file" id="attachAdd" name="attachAdd" class="file-upload no-print" size="60" /> 
    </form> 

Mon code C# (.cs) fichier se présente comme suit:

using System; 
    using System.Collections.Generic; 
    using System.Globalization; 
    using System.Net.Mail; 
    using System.Web.UI; 
    using System.Data; 

    namespace Corp.SP.NewForms 
    { 
     public class ProcessForms : ParentForm  
     { 
      public ProcessForms(string formHTML, EFormMetaData formMetaData, Page requestPage) 
       : base(formHTML, formMetaData, requestPage) 
      { 
       EFormHTML = formHTML; 
       EFormMetaData = formMetaData; 
       EFormPage = requestPage; 
      }  
     public override string ProcessEmail(EFormMetaData formInfo, Page page) 
     { 
      string email = base.ProcessEmail(formInfo, page); 


      //Process body header 
      email = email.Replace("{FORMURL}", new UriBuilder(page.Request.Url) { Port = -1 }.ToString()); 
      email = email.Replace("{EMAILTOADDRESS}", formInfo.EmailToAddress); 
      email = email.Replace("{EMAILSUBJECT}", formInfo.EmailSubject); 

     string attachAdd = page.Request.Form["attachAdd"]; 
     System.Net.Mail.Attachment attachment; 
     attachment = new System.Net.Mail.Attachment(attachAdd); //ERROR 
     email.Attachments.Add(attachment);     

      return email; 
     } 
     public override void SendEmail() 
     { 
       base.SendEmail(); 
     } 
    }} 

Je me sens comme si le code utilisé pour ajouter des pièces jointes n'est pas correct, mais je l'ai trouvé sur this question of Stackoverflow.

string attachAdd = page.Request.Form["attachAdd"]; 
    System.Net.Mail.Attachment attachment; 
    attachment = new System.Net.Mail.Attachment(attachAdd); //ERROR 
    email.Attachments.Add(attachment);     

Le code indique l'erreur avec une ligne rouge sous Pièces jointes(chaîne ne contient pas la définition de « pièces jointes » et aucune méthode d'extension « Pièces jointes » d'accepter un premier argument de type « String » n'a pu être trouvée (manque-t-il une directive using ou une référence d'assembly?) dans la ligne suivante.

email.Attachments.Add (pièce jointe); Quelqu'un peut-il faire la lumière sur la façon dont je peux corriger ce code?

Nous utilisons des Eforms SharePoint.

+1

'email' est une chaîne, comme l'erreur dit qu'il n'a pas de propriété' Attachments'. Vous ne pouvez pas essayer d'ajouter une pièce jointe à une chaîne. Vous voulez probablement créer un message électronique et joindre à cela. Voir le lien que vous avez posté vous-même pour savoir comment le faire. –

Répondre

0

Pour attacher le HttpPostedFile à l'e-mail. Vous devrez le convertir en Stream.

Egalement dans votre code 'email' est une chaîne. Il n'a pas de propriété Attachment. Il devrait être type MailMessage.

Essayez comme ci-dessous

HttpPostedFile attachAdd = page.Request.Form["attachAdd"]; 
var email = new MailMessage(); 
string strFileName = 
     System.IO.Path.GetFileName(attachAdd.PostedFile.FileName); 
     Attachment attachFile = 
     new Attachment(attachAdd.PostedFile.InputStream, strFileName); 
     email.Attachments.Add(attachFile); 
+0

Salut, j'ai remplacé mon bit de code par le vôtre et maintenant il est dit que String ne contient pas de définition de "FichierEnFichier" et aucune méthode d'extension "FichierEntrée" acceptant un premier argument de type "Chaîne" n'a été trouvée. ou une référence d'assembly – Shrilekha

+0

attachAdd n'est pas string son l'ID du fichier de type d'entrée dans la page .aspx..try page.Request.Form ["attachAdd"] – Sachu

+0

J'ai ajouté la chaîne strFileName = System.IO.Path.GetFileName (page.Request .Form ["attachAdd"]. AddedFile.FileName); Pièce jointe attachFile = nouvelle pièce jointe (page.Request.Form ["attachAdd"]. Fiché.InputStream, strFileName); L'erreur persiste dans postedFile – Shrilekha