IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

envoyer mail avec piece jointre


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 16
    Points
    16
    Par défaut envoyer mail avec piece jointre
    Bonjour, s'il vous plait j'ai un problème au niveau d'uplade une fichier, l'email envoyer mais le fichier non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
     
    namespace ApplicationMail.Models{
        public class Mail{
            public string From { get; set; }
            [Required(ErrorMessage = "Please provide password", AllowEmptyStrings = false)]
            [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
            public string Password { get; set; }
            public string To { get; set; }
            public string Subject { get; set; }
            public string Body { get; set; }
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using ApplicationMail.Models;
    using System.IO;
    using System.Net.Mail;
    using System.Net; 
    namespace ApplicationMail.Controllers{
        public class MailController : Controller{
     
            public ActionResult Index(){
                return View();
            }
     
            [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult SubmitCV(HttpPostedFileBase file){
                if (file == null){
                    ModelState.AddModelError("CustomError", "Please select your file");
                    return View();
                }
                if (!(file.ContentType == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
                    file.ContentType == "application/pdf")){
                    ModelState.AddModelError("CustomError", "Only .docx and .pdf file allowed");
                    return View();
                }
                if (ModelState.IsValid){
                    try{
                        string fileName = Guid.NewGuid() + Path.GetExtension(file.FileName);
                        file.SaveAs(Path.Combine(Server.MapPath("~/UploadedCV"), fileName));
                        ViewBag.Message = "Successfully Done";
                    }
                    catch (Exception ex){
                        ViewBag.Message = "Error! Please try again";
                        return View();
                    }
                }
                return View();
            }
     [HttpPost]
            public ActionResult Index(ApplicationMail.Models.Mail objModelMail, String From, String password, HttpPostedFileBase file){
                if (ModelState.IsValid){
                    using (MailMessage mail = new MailMessage(From, objModelMail.To)){
                        mail.Subject = objModelMail.Subject;
                        mail.Body = objModelMail.Body;
                        if (file != null){
                            string fileName = Path.GetFileName(file.FileName);
                            mail.Attachments.Add(new Attachment(file.InputStream, fileName));
                        }
                        mail.IsBodyHtml = false;
                        SmtpClient smtp = new SmtpClient();
                        smtp.Host = "smtp.gmail.com";
                        smtp.EnableSsl = true;
                        NetworkCredential networkCredential = new NetworkCredential(From, password);
                        smtp.UseDefaultCredentials = true;
                        smtp.Credentials = networkCredential;
                        smtp.Port = 587;
                        smtp.Send(mail);
                        ViewBag.Message = "Sent";
                        return View("Index", objModelMail);
                    }
                }
                else{
                    return View();
                }
            }
        }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    @model ApplicationMail.Models.Mail
    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    <h2>Index</h2>
    <fieldset>
        <legend>
            Send Email
        </legend>
        @using (Html.BeginForm()){
            @Html.ValidationSummary()
            <p>From: </p>
            <p>@Html.TextBoxFor(m => m.From)</p>
            <p>Password: </p>
            <p>@Html.PasswordFor(m => m.Password)</p>
     
            <p>To: </p>
            <p>@Html.TextBoxFor(m => m.To)</p>
            <p>Subject: </p>
            <p>@Html.TextBoxFor(m => m.Subject)</p>
            <p>Body: </p>
            <p>@Html.TextAreaFor(m => m.Body)</p>
            <div class="editor-field">
            <input type="file" name="file" />
             @Html.ValidationMessage("CustomError")
             </div>
            <div><input type="text" name="message"/></div>
            <input type="submit" value="Upload file" onclick="ajouter()" />
            <input type="submit" value="Send" />
        }
    </fieldset>
    <script type="text/javascript">
     function ajouter() {
                 $.ajax({
     
                     url: '@Url.Action("SubmitCV", "Mail")',
                    type: 'POST',
                    //data: { file: $("#Code_cl").val() },
                    });
     
     }
        </script>

  2. #2
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut
    Salut,

    Dans ton JS, la récupération du fichier est commentée, ça ne devrait pas marcher comme ça, c'est clair.

    Par contre, si tu dé-commentes et que tu mets un point d'arrêt dans ton contrôleur, es-tu sûr de bien récupérer un fichier ? Ton code me laisse perplexe par rapport à ça (val()).

    Je m'attendais plutôt à un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var input = document.getElementById('file');
    var premierFichier = input.files[0];
    var listeCompleteDesFichiers = input.files;
    soit, pour ton cas précis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.ajax({
       url: '@Url.Action("SubmitCV", "Mail")',
       type: 'POST',
       data: { file: document.getElementById('file').files[0] },
    });
    Bien entendu, ce code est optimiste, il conviendrait de tester si un fichier existe avant de l'envoyer aveuglément comme je le fais là.

Discussions similaires

  1. Workflow pour envoyer mail avec piece jointe
    Par zeanlou dans le forum SAGE
    Réponses: 2
    Dernier message: 24/10/2013, 09h17
  2. envoyer des mails avec piece jointe / SAS v9.1
    Par franz2b dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 03/05/2010, 21h37
  3. [Mail] Envoyer un mail avec piece jointe
    Par Seb33300 dans le forum Langage
    Réponses: 3
    Dernier message: 22/04/2009, 16h39
  4. Envoyer mail avec piece jointe par outlook
    Par skunkies dans le forum Windows Forms
    Réponses: 6
    Dernier message: 18/11/2008, 01h09
  5. [Mail] je veux envoyer un mail avec Piece Jointe en php
    Par hanafimohammed dans le forum Langage
    Réponses: 2
    Dernier message: 20/04/2007, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo