| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1117 人关注过本帖
标题:System.Net.Mail发送附件总是失败
取消只看楼主 加入收藏
zhuxuanzhu
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2011-2-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
System.Net.Mail发送附件总是失败
protected void btnSend_Click(object sender, EventArgs e)
  {
  if (this.txtReceiver.Text != string.Empty && this.txtSender.Text != string.Empty)
  {
  MailMessage myMail = new MailMessage();
  myMail.From = new MailAddress(txtSender.Text.Trim(), "TT", Encoding.UTF8);
  myMail.To.Add(new MailAddress(txtReceiver.Text.Trim(), "Troy", Encoding.UTF8));
  myMail.Subject = txtSubject.Text.Trim();
  myMail.Body = txtContent.Text.Trim();
  myMail.Priority = MailPriority.High;
  string sFilePath = this.upFile.PostedFile.FileName;
  FileInfo fi = new FileInfo(sFilePath);
  if (fi.Exists)
  {
  Attachment myAttachment = new Attachment(sFilePath, );
   disposition = myAttachment.ContentDisposition;
  disposition.CreationDate = File.GetCreationTime(sFilePath);
  disposition.ModificationDate = File.GetLastWriteTime(sFilePath);
  disposition.ReadDate = File.GetLastAccessTime(sFilePath);
  myMail.Attachments.Add(myAttachment);
  }
  SmtpClient client = new SmtpClient("smtp., 25);
  client.Credentials = new (this.txtSUser.Text.Trim(), this.txtEPwd.Text.Trim());
  client.Send(myMail);
  }
  }



这是代码,问题是,如果我在FileUpload控件中添加一个文件,路径是C:\user\desktop,那么FileInfo对象fi在调用exists()函数就永远是false,如果把if条件拿掉,提示该文件不在C:\Program Files (x86)\Common Files\microsoft shared\DevServer里面。然后我试着把文件放进这个文件夹中,又发现一个问题,提示是invalid mail header '周',为什么不添加附件什么问题都没有,只有一添加一个附件就会有问题呢?求高手解答!!最好两个问题都能给点提示,文件路径和mail header的编码问题。。
搜索更多相关主题的帖子: void 
2011-02-21 22:35
zhuxuanzhu
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2011-2-21
收藏
得分:0 
补充::
后来测试下来是ContentDispotion的三个属性添加问题,如果不给disposition添加属性,文件就能发送成功,但是一添加就会出现invalid mail header‘周’,这又是为什么呢?求教!!谢谢
2011-02-22 10:20
zhuxuanzhu
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2011-2-21
收藏
得分:0 
回复 3楼 hhy420459674
//附件处理
            HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
            int fileLeng = 0;
            for (int i = 0; i < files.Count; i++)
            {
                HttpPostedFile file = files[i];     //得到其中的一个文件
                if (file.ContentLength > 0)
                {
                    fileLeng += file.ContentLength;
                     streamFile = file.InputStream;  //返回的上传文件的文件流
                    string uLoadType = file.ContentType;
                    ContentType contentTpye = new ContentType();//获取或设置由此实例表示的 Content-Type 标头.
                    contentTpye.MediaType = uLoadType;//数据的类型为上传文件的类型
                    Attachment attachment = new Attachment(streamFile, contentTpye);
                    mess.Attachments.Add(attachment);
                }
            }


我用你这段代码就无法发送附件了。。。原来我把disposition注释掉还可以的。。你这里面的file对象是上传的文件流吧,我是直接用文件路径作为参数来发送附件的,文件流的话,是不是必须把文件上传到服务器的?我想问的是,你用这段代码的时候,附件是在哪儿呢?在桌面上还是?网页里附件的添加方法是通过upLoad控件吗?还是什么呢?求教~3Q
2011-02-23 21:12
zhuxuanzhu
Rank: 1
等 级:新手上路
帖 子:12
专家分:3
注 册:2011-2-21
收藏
得分:0 
回复 5楼 hhy420459674
我试试看···
2011-02-24 17:26
快速回复:System.Net.Mail发送附件总是失败
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026617 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved