asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

时间:2022-08-28 09:31:44
asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常 以前用这个一模一样的程序发送带附件的邮件没有问题,今天突然就出问题了,很奇怪,断点调式fileupload.HasFile为true,那就说明有文件,可是却有一下的异常
asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

下面贴上我的代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    收件人:<asp:TextBox ID="txt_toman" runat="server"></asp:TextBox>
        <br />
        主题:<asp:TextBox ID="txt_title" runat="server"></asp:TextBox>
        <br />
        内容:<asp:TextBox ID="txt_content" runat="server" Height="66px" 
            TextMode="MultiLine" Width="194px"></asp:TextBox>
        <br />
        附件:<asp:FileUpload ID="FileUpload1" runat="server" />
        <br />
        <asp:Button ID="btn_send" runat="server" onclick="btn_send_Click" 
            Text="   Send   " />
        <asp:Label ID="lbl_mag" runat="server" ForeColor="Red"></asp:Label>
    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Text;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btn_send_Click(object sender, EventArgs e)
        {
            bool flag = SendMail("发信人地址", "发信人", "用户名", "密码", txt_title.Text, txt_content.Text, txt_toman.Text, FileUpload1);
            if (flag)
            {
                lbl_mag.Text = "发送成功";
            }
            else
            {
                lbl_mag.Text = "糟糕,发送失败啦!";
            }
        }

        /// <summary>
        /// 简单邮件发送器
        /// </summary>
        /// <param name="user">发信人地址</param>
        /// <param name="who">发信人</param>
        /// <param name="name">发送用户名</param>
        /// <param name="pwd">用户名密码</param>
        /// <param name="title">邮件标题</param>
        /// <param name="body">发送内容</param>
        /// <param name="shoujian">收件人地址</param>
        /// <param name="file">附件</param>
        /// <returns>是否发送成功</returns>

        public static bool SendMail(string user, string who, string name, string pwd, string title, string body, string shoujian, FileUpload file)
        {

            MailMessage Message = new MailMessage(
                new MailAddress(user,   //第一个是发信人的地址,
                                who, //第二个参数是发信人 
                               Encoding.UTF8),      //编码
                                new MailAddress(shoujian));//收信人邮箱
            if (file.HasFile)
            {
                //添加附件
                Attachment attachment = new Attachment(file.PostedFile.FileName);
                Message.Attachments.Add(attachment);
            }
            Message.SubjectEncoding = Encoding.UTF8;
            Message.Subject = title;//标题
            Message.BodyEncoding = Encoding.UTF8;
            Message.IsBodyHtml = true;
            Message.Body = body; //主体
            Message.Priority = MailPriority.High;

            SmtpClient smtpClient = new SmtpClient("smtp.163.com", 25);
            //邮件信箱服务器                            //发送端口
            smtpClient.Credentials = new System.Net.NetworkCredential(name, pwd);
            //用户名                            //用户名密码
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.Timeout = 99999;
            try
            {
                smtpClient.Send(Message);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }
}


求大侠,帮忙解决~~~

26 个解决方案

#1


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#2


楼主,我看你的代码,你上传附件的时候怎么上传的呢。难道就把一个文件名给你的附件对象就可以了?我晕你哦、 我不知道邮件附件对象需要什么,再怎么也是传一个文件流给附件吧。

#3


好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:

#4


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#5


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#6


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream

引用 1 楼 lz00728 的回复:


+1









论坛签名======================================================================

lz00728:你好!
截至 2011-10-25 09:54:58 前:
你已发帖 9 个, 未结贴  0 个;
结贴率为:  100.00%

当您的问题得到解答后请及时结贴.

http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html

如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖

如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx

#7


楼主还不结贴给分

#8


引用 7 楼 yangjjfan 的回复:
楼主还不结贴给分

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常问题还没解决啊

#9


我的天,我不是给你说了么
引用 8 楼 lz00728 的回复:
引用 7 楼 yangjjfan 的回复:

楼主还不结贴给分

问题还没解决啊

#10


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:


你说的这里?? file.PostedFile.InputStream 有异常啊

#11


我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?

#12


引用 11 楼 yangjjfan 的回复:
我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?

file.PostedFile 不是null啊

#13


我的天,那是什么异常嘛

#14


if (file.HasFile)
            {
                //添加附件
                 Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
                Message.Attachments.Add(attachment);
            }

#15


很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt

#16


问你什么错啊

#17


打个我不是给你说了吗。叫你改成我给你的代码file.PostedFile.InputStream,你用filaName有鸟用啊。用户的文件地址在你的服务器上还能找到这个文件?你想想原理吧。oh my god
引用 15 楼 lz00728 的回复:
很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt

#18


file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

#19


不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
引用 18 楼 dongxinxi 的回复:
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

#20


引用 18 楼 dongxinxi 的回复:
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧

#21


引用 19 楼 yangjjfan 的回复:
不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常能不能给个代码咯

#22


楼主我都给你说了怎么做了,哎,我真替你揪心啊
引用 20 楼 lz00728 的回复:
引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧

#23


 Attachment attachment = new Attachment(file.PostedFile.FileName);
                Message.Attachments.Add(attachment);
这是你的代码。换成这个
 Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
                Message.Attachments.Add(attachment);

引用 22 楼 yangjjfan 的回复:
楼主我都给你说了怎么做了,哎,我真替你揪心啊引用 20 楼 lz00728 的回复:

引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务……

#24


引用 23 楼 yangjjfan 的回复:
 Attachment attachment = new Attachment(file.PostedFile.FileName);
                Message.Attachments.Add(attachment);
这是你的代码。换成这个
 Attachment attachment = new Attachment(file.PostedFile.InputStr……


你早贴代码嘛,我心太急了不知道到底改哪里啊  asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#25


给分吧。哈哈哈
引用 24 楼 lz00728 的回复:
引用 23 楼 yangjjfan 的回复:

Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.……

#26


引用 25 楼 yangjjfan 的回复:
给分吧。哈哈哈
引用 24 楼 lz00728 的回复:

引用 23 楼 yangjjfan 的回复:

Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment ……

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#1


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#2


楼主,我看你的代码,你上传附件的时候怎么上传的呢。难道就把一个文件名给你的附件对象就可以了?我晕你哦、 我不知道邮件附件对象需要什么,再怎么也是传一个文件流给附件吧。

#3


好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:

#4


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#5


asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#6


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream

引用 1 楼 lz00728 的回复:


+1









论坛签名======================================================================

lz00728:你好!
截至 2011-10-25 09:54:58 前:
你已发帖 9 个, 未结贴  0 个;
结贴率为:  100.00%

当您的问题得到解答后请及时结贴.

http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html

如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖

如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx

#7


楼主还不结贴给分

#8


引用 7 楼 yangjjfan 的回复:
楼主还不结贴给分

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常问题还没解决啊

#9


我的天,我不是给你说了么
引用 8 楼 lz00728 的回复:
引用 7 楼 yangjjfan 的回复:

楼主还不结贴给分

问题还没解决啊

#10


引用 3 楼 yangjjfan 的回复:
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
引用 1 楼 lz00728 的回复:


你说的这里?? file.PostedFile.InputStream 有异常啊

#11


我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?

#12


引用 11 楼 yangjjfan 的回复:
我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?

file.PostedFile 不是null啊

#13


我的天,那是什么异常嘛

#14


if (file.HasFile)
            {
                //添加附件
                 Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
                Message.Attachments.Add(attachment);
            }

#15


很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt

#16


问你什么错啊

#17


打个我不是给你说了吗。叫你改成我给你的代码file.PostedFile.InputStream,你用filaName有鸟用啊。用户的文件地址在你的服务器上还能找到这个文件?你想想原理吧。oh my god
引用 15 楼 lz00728 的回复:
很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt

#18


file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

#19


不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
引用 18 楼 dongxinxi 的回复:
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

#20


引用 18 楼 dongxinxi 的回复:
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧

#21


引用 19 楼 yangjjfan 的回复:
不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常能不能给个代码咯

#22


楼主我都给你说了怎么做了,哎,我真替你揪心啊
引用 20 楼 lz00728 的回复:
引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧

#23


 Attachment attachment = new Attachment(file.PostedFile.FileName);
                Message.Attachments.Add(attachment);
这是你的代码。换成这个
 Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
                Message.Attachments.Add(attachment);

引用 22 楼 yangjjfan 的回复:
楼主我都给你说了怎么做了,哎,我真替你揪心啊引用 20 楼 lz00728 的回复:

引用 18 楼 dongxinxi 的回复:

file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件

上传到服务器这样不好吧,每次都上传那服务……

#24


引用 23 楼 yangjjfan 的回复:
 Attachment attachment = new Attachment(file.PostedFile.FileName);
                Message.Attachments.Add(attachment);
这是你的代码。换成这个
 Attachment attachment = new Attachment(file.PostedFile.InputStr……


你早贴代码嘛,我心太急了不知道到底改哪里啊  asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常

#25


给分吧。哈哈哈
引用 24 楼 lz00728 的回复:
引用 23 楼 yangjjfan 的回复:

Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.……

#26


引用 25 楼 yangjjfan 的回复:
给分吧。哈哈哈
引用 24 楼 lz00728 的回复:

引用 23 楼 yangjjfan 的回复:

Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment ……

asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常asp.net用fileupload发送带附件的邮件,出现:此流上不支持超时的异常