0

为什么我不能发送 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);
            }
        }

如果您能告诉我另一种发送这些文件的方法,那也很棒

4

1 回答 1

1

如果您的 jpeg 和文本文件正在运行,我猜您的问题可能出在您指向其他一些文件类型的路径或其中一些其他文件的大小中(只是一个疯狂的猜测,因为您发布的代码看起来不错) .

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

这是一些工作代码的片段。请注意,我从未明确设置mm.BodyEncoding = System.Text.Encoding.UTF8;ormClient.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"));

你提到你希望看到不同的东西......好吧,你的附件代码看起来不错,所以我想我会提供一些代码,允许你在电子邮件中嵌入图像而不是作为附件:

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

发布一些捕获的特定错误消息/异常,您将获得更多帮助...

于 2010-07-10T01:30:29.137 回答