Jas*_*son 2 c# pdf asp.net email-attachments c#-4.0
我有一个将电子邮件发送到列表的例程,如下所示,我已经对其进行了测试。给我的第一封电子邮件很好,但第二封电子邮件的字节数少于实际文件使其损坏无法打开的字节数。我怎样才能使每个电子邮件附件都正确发送而不发送任何 0 字节附件?我通过 ASP.NET C# 网络表单将附件直接发送给收件人,但大多数 PDF 附件都被错误地解码为错误消息。这是页面的主要电子邮件代码:
if (emailIsValid(EmailToSend))
{
    string TheSubject = SubjectTxt.Text;
    string TheBody = "Dear " + FirstName + ",<br/><br/>" + MessageTxt.Text;
    TheBody = TheBody + " EMail Body "
    string BodyTxt = TheBody.Replace(Environment.NewLine, "<br />");
    MailMessage mailObj = new MailMessage(
        "noreply@company.com", EmailToSend, TheSubject, BodyTxt);
    SmtpClient SMTPServer = new SmtpClient("unknown.company.com");
    string RPT = FromTxt.Text;
    mailObj.ReplyToList.Add(RPT);
    mailObj.BodyEncoding = System.Text.Encoding.UTF8;
    mailObj.IsBodyHtml = true;
    string filePath = txtAttachment.PostedFile.FileName;
    string filename = Path.GetFileName(filePath);
    string ext = Path.GetExtension(filename);
    string contenttype = String.Empty;
    //Set the contenttype based on File Extension
    switch (ext)
    {
        case ".doc":
            contenttype = "application/vnd.ms-word";
            break;
        case ".docx":
            contenttype = "application/vnd.ms-word";
            break;
        case ".xls":
            contenttype = "application/vnd.ms-excel";
            break;
        case ".xlsx":
            contenttype = "application/vnd.ms-excel";
            break;
        case ".ppt":
            contenttype = "application/vnd.ms-powerpoint";
            break;
        case ".pptx":
            contenttype = "application/vnd.ms-powerpoint";
            break;
        case ".jpg":
            contenttype = "image/jpg";
            break;
        case ".png":
            contenttype = "image/png";
            break;
        case ".gif":
            contenttype = "image/gif";
            break;
        case ".pdf":
            contenttype = "application/pdf";
            break;
        case ".csv":
            contenttype = "text/csv";
            break;
        case ".txt":
            contenttype = "text/csv";
            break;
        default:
            contenttype = "Unknown Content Type";
            break;
    }
    if (txtAttachment.PostedFile != null && contenttype != "Unknown Content Type")
    {
        try
        {
            string strFileName =
            System.IO.Path.GetFileName(txtAttachment.PostedFile.FileName);
            Attachment attachFile =
            new Attachment(txtAttachment.PostedFile.InputStream, strFileName, contenttype);                                           
            mailObj.Attachments.Add(attachFile);
        }
        catch
        {
        }
    }
    try
    {
        SMTPServer.Send(mailObj);
        SqlConnection con2 = new SqlConnection(CS);
        con2.Open();
        DateTime now = DateTime.Now;
    }
catch
    {
    }
前
Attachment attachFile =
        new Attachment(txtAttachment.PostedFile.InputStream, strFileName, contenttype);
尝试重置流光标,如下所示:
txtAttachment.PostedFile.InputStream.Position = 0;
Attachment attachFile =
        new Attachment(txtAttachment.PostedFile.InputStream, strFileName, contenttype);