我可以发送图像和rar文件,但使用asp.net文件已损坏?

hmk*_*hmk 3 c# asp.net email email-attachments

我使用asp.net和c#.net发送带有大附件的邮件(最大10mb),这就是我可以转换文件的原因,.txt,.doc,.xls文件是完美发送但图像和rar文件损坏了什么是问题请给我任何建议, 我的代码是

 DataSet ds = SqlHelper.ExecuteDataset(con, "usp_GetEmailSettings", Session["UserID"].ToString());
                message.To.Add(ds.Tables[0].Rows[0]["Email"].ToString());
                message.CC.Add(ds.Tables[1].Rows[0]["EmailID"].ToString());
                message.Subject = ds.Tables[0].Rows[0]["Email_Subject"].ToString();
                message.From = new System.Net.Mail.MailAddress(ds.Tables[1].Rows[0]["EmailID"].ToString());
                message.Body = ds.Tables[0].Rows[0]["Email_Body"].ToString() +
                                       "<br/><br/> <font size='2.0em'>Submission Number : " +filename+"<br/> DBA Name : " +txtDBAName.Text + "<br/> Insured Name : " +TxtInsured.Text + "<br/> Additional Comments : " + txtcomment.Value ;
                message.IsBodyHtml = true;
                string attachId;
                System.Net.Mail.Attachment at;
 // Get the HttpFileCollection and Attach the Multiple files
                HttpFileCollection hfc = Request.Files;
                if (hfc.Count > 0)
                {
                    for (int i = 0; i < hfc.Count; i++)
                    {
                        HttpPostedFile hpf = hfc[i];
                        if (hpf.ContentLength > 0)
                        {
                            if (i == 0)
                            {
                                string[] ext = System.IO.Path.GetFileName(hpf.FileName).Split('.');
                                attachId = filename + "." + ext[1];
                                at = new System.Net.Mail.Attachment(fluuploader.FileContent, attachId);
                            }

                            else
                            {
                                string[] ext = System.IO.Path.GetFileName(hpf.FileName).Split('.');
                                attachId = filename + "(" + i + ")" + "." + ext[1];
                                at = new System.Net.Mail.Attachment(fluuploader.FileContent, attachId);
                            }
                            at.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
                           // at.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;                       
                            message.Attachments.Add(at);
                        }

                    }
                }
 smtp.Timeout = 9999999;
                smtp.Send(message);  
Run Code Online (Sandbox Code Playgroud)

web.config我的代码是

<httpRuntime executionTimeout="240" maxRequestLength="20480"/>
Run Code Online (Sandbox Code Playgroud)

at.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit; 我可以给出评论,该行不发送大文件,但所有都完美的工作,但我发送大文件最大10mb,请给我建议

Ran*_* H. 6

除非有一些黑魔法发生在幕后,我想你需要换出fluuploader.FileContenthpf.InputStream.另外,我发现将InputStream的Position设置为0会有所帮助.for循环中的最终代码应如下所示:

    HttpPostedFile hpf = hfc[i];

    if (hpf.ContentLength > 0)
    {
        hpf.InputStream.Position = 0;

        if (i == 0)
        {
            string[] ext = System.IO.Path.GetFileName(hpf.FileName).Split('.');
            attachId = filename + "." + ext[1];
            at = new System.Net.Mail.Attachment(hpf.InputStream, attachId);
        }

        else
        {
            string[] ext = System.IO.Path.GetFileName(hpf.FileName).Split('.');
            attachId = filename + "(" + i + ")" + "." + ext[1];
            at = new System.Net.Mail.Attachment(hpf.InputStream, attachId);
        }

        message.Attachments.Add(at);
    }
Run Code Online (Sandbox Code Playgroud)