Отправка вложений через gmail не работает с определенными типами. Почему? - PullRequest
0 голосов
/ 10 июля 2010

Почему я не могу отправить xls, doc и другие файлы - это работает для jpg, txt и других.

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("mymail@gmail.com");
            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 = "mymail@gmail.com";//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);
            }
        }

если вы покажете мне другой способ отправки этих файлов, это тоже будет здорово

1 Ответ

1 голос
/ 10 июля 2010

Если ваши jpegs и текстовые файлы работают, я предполагаю, что ваша проблема может заключаться в вашем пути к некоторым другим типам файлов или в размере некоторых из этих других файлов (просто дикая догадка на самом деле, как код, который вы опубликовали выглядит нормально).

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

Вот фрагмент рабочего кода. Обратите внимание, что я никогда не устанавливал свойства mm.BodyEncoding = System.Text.Encoding.UTF8; или mClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; явно и имел успех. (Вероятно, просто несвязанное наблюдение ...)

  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"));

Вы упомянули, что вы хотели бы видеть что-то другое ... Ну, ваш код вложения выглядит хорошо, поэтому я подумал, что я бы предоставил некоторый код, который позволит вам вставлять изображения в сообщения электронной почты, а не как вложение: 1009 *

// 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);

Опубликуйте сообщения об определенных ошибках / исключениях, и вы получите дополнительную помощь ...

...