2010-07-09 3 views
0

Pourquoi ne puis-je pas envoyer des fichiers xls, doc et autres - cela fonctionne pour jpg, txt et autres.Envoyer des pièces jointes via Gmail ne fonctionne pas avec certains types - Pourquoi?

private void BuildAndSend(string pTo,string pCC,string pSubject,string pBody) 
     { 
      // building the mail 
      System.Net.Mail.MailAddress toAddress = new System.Net.Mail.MailAddress(pTo); 

      System.Net.Mail.MailAddress fromAddress = new System.Net.Mail.MailAddress("[email protected]"); 
      System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage(fromAddress, toAddress); 
      mm.Subject = pSubject ; 
      mm.Body = pBody; 

      System.Net.Mail.MailAddress cc = new System.Net.Mail.MailAddress(pCC); 
      mm.CC.Add(cc); 

      addAttachments(mm); 
      mm.IsBodyHtml = true; 
      mm.BodyEncoding = System.Text.Encoding.UTF8; 

      //sending the mail 
      sendMail(mm); 
     } 

     private void addAttachments(System.Net.Mail.MailMessage mm) 
     { 
      string attachmentFile; 
      for (int i = 0; i < lstAttachments.Items.Count ; i++) 
      { 

       string fileFullName = pullDictionary[i]; 
       attachmentFile = fileFullName; 
       System.Net.Mail.Attachment mailAttachment = new System.Net.Mail.Attachment(attachmentFile); 
       mm.Attachments.Add(mailAttachment); 

      } 

     } 

     private void sendMail(System.Net.Mail.MailMessage mm) 
     { 
      try 
      { 
       // loging in into sending user account 
       string smtpHost = "smtp.gmail.com"; 
       string userName = "[email protected]";//sending Id 
       string password = "mypass"; 
       System.Net.Mail.SmtpClient mClient = new System.Net.Mail.SmtpClient(); 
       mClient.Port = 587; 
       mClient.EnableSsl = true; 
       mClient.UseDefaultCredentials = false; 
       mClient.Credentials = new NetworkCredential(userName, password); 
       mClient.Host = smtpHost; 
       mClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
       mClient.Send(mm); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

si vous pouvez me montrer une autre façon d'envoyer ces fichiers, il sera grand aussi bien

+2

Quel message d'erreur obtenez-vous? Si ce n'est pas le cas, mettez un try-catch autour de l'instruction Add(), puis mettez à jour votre message. –

+0

Comment dites-vous que ces pièces jointes ne sont pas envoyées? Ce qui se produit? Avez-vous un message d'erreur? L'e-mail est-il envoyé sans la pièce jointe? – Unicron

Répondre

1

Si vos fichiers JPEG et des fichiers texte va Je devine que votre problème peut être dans votre chemin à certains les autres types de fichiers ou dans la taille de certains de ces autres fichiers (juste une conjecture sauvage vraiment que le code que vous avez posté semble ok).

// this looks suspect 
string fileFullName = pullDictionary[i]; 
attachmentFile = fileFullName; 

Voici un extrait de code fonctionnel. Notez que je n'ai jamais défini les propriétés mm.BodyEncoding = System.Text.Encoding.UTF8; ou mClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; explicitement et que j'ai réussi. (Probablement juste une observation sans rapport avec ...)

MailMessage m = new MailMessage(_gmailEmail, _to); 
    m.Subject = _emailSubject; 
    m.Body = _body; 
    for (int i = 0; i < lstAttachments.Items.Count ; i++) // your list 
    m.Attachments.Add(new Attachment("\path\to\file\to\attach\here")); 

Vous avez dit que vous aimeriez voir quelque chose de différent ... Eh bien, votre code d'attache a l'air bien donc je pensais que je fournir un code qui vous permet d'inclure des images en ligne dans votre e-mail plutôt que comme une pièce jointe:

// the below adds embedded images an email... 
    AlternateView avHtml = AlternateView.CreateAlternateViewFromString(
     _body, null, System.Net.Mime.MediaTypeNames.Text.Html); 
    LinkedResource pic = new LinkedResource("\path\to\file\to\embed\here", System.Net.Mime.MediaTypeNames.Image.Jpeg); 
    pic.ContentId = "IMAGE1"; // just make sure this is a unique string if you have > 1 
    avHtml.LinkedResources.Add(pic); 
    m.AlternateViews.Add(avHtml); 

Poster des messages d'erreur spécifiques/exceptions capturés et vous obtiendrez plus d'aide ...

+1

Fonctionne comme un charme ... C'était un petit projet pour ma mère que j'ai construit il y a six mois. Après un moment, j'ai juste abandonné (Tout ce dont elle se soucie dans les emails sont les pièces jointes). Maintenant, quand j'ai encore besoin d'une fonctionnalité de courriel ... Je l'ai enfin reçu de vous et c'est drôle que je ne sois pas seulement reconnaissant de m'aider, mais je suis aussi excité parce que je serais capable de donner le cadeau à ma mère Je voulais lui donner avant ... Donc depuis qu'il est devenu personnel ... vous avez un grand merci du fond du coeur :) – Asaf

Questions connexes