1
MemoryStream ms = new MemoryStream();
                PrintableComponentLink pcl = new PrintableComponentLink(new PrintingSystem());
                pcl.Component = ASPxGridViewExporter1;
                pcl.Margins.Left = pcl.Margins.Right = 50;
                pcl.Landscape = true;
                pcl.CreateDocument(false);
                pcl.PrintingSystem.Document.AutoFitToPagesWidth = 1;
                pcl.ExportToPdf(ms);

MailMessage mailMsg = new MailMessage();
            mailMsg.To.Add("n@x.net");


            MailAddress mailAddress = new MailAddress("info@x.net");
            mailMsg.From = mailAddress;


            mailMsg.Subject = "";
            mailMsg.Body = "";

            System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
            System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(ms, "x.pdf");



            mailMsg.Attachments.Add(attach);


            SmtpClient smtpClient = new SmtpClient("192.168.1.200", 25);
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Send(mailMsg);

            ms.Close();

そして、添付ファイルに 153B のファイルを取得しています。

どこが間違っていますか?

4

3 に答える 3

0

MemoryStream を Attachment として使用しないでください。 ExportToPdfは、Stream から派生した型を受け入れます。代わりに、PDF をFileStream.

pcl.ExportToPdf(fileStream);

次に、FileStream をアタッチし、MIME タイプを修正します。

var attach = new System.Net.Mail.Attachment(fileStream, "x.pdf", MediaTypeNames.Application.Pdf);

プロセスで作成される一時ファイルを削除するだけです。何らかの理由で、ここで添付ファイルを設定しても、MemoryStream は機能しません。MemoryStream.Position = 0;

于 2013-11-14T18:04:14.960 に答える
0

Memorystream と PDF の名前ではなく、MemoryStream と ContentType を添付ファイルに渡す必要があると思います。また、ms が位置 0 に設定されていることを確認してください。

これらの行を置き換えてみてください

System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Application.Pdf);
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(ms, "x.pdf");
mailMsg.Attachments.Add(attach);

以下を使用します。

ms.Seek(0, SeekOrigin.Begin);
System.Net.Mime.ContentType ct= new System.Net.Mime.ContentType();
ct.MediaType = System.Net.Mime.MediaTypeNames.Application.Pdf;
ct.Name = "x.pdf";

Attachment attach = new Attachment(ms, contentType);
mailMsg.Attachments.Add(attach);
于 2013-11-14T17:12:47.310 に答える