سؤال

لدي تدفق محمل مع HTML الذي حصلت عليه من تصدير. يمكنني أن أغتنم هذا HTML من الدفق في البايت [] (هل هناك أي طريقة أخرى؟)، وأريد أن أكتب هذا البايت [] إلى جسم بريد HTML.

السبب في القيام بذلك هو أنني أريد تصدير تقرير إلى HTML، واستخدام هذه البيانات في نص البريد، بدلا من تصديره إلى PDF وإرساله كمرفق.

آمل أن يكون واضحا بما فيه الكفاية، واسمحوا لي أن أعرف إذا كنت بحاجة إلى إضافة شيء ما.

شكرا

هل كانت مفيدة؟

المحلول

لقد وجدت ذلك. إنه بسيط للغاية، على الرغم من أنني لم أجد النتيجة التي أرغب فيها، فإن وجود إخراج منسق مباشرة إلى البريد، وكان السؤال أكثر حول كيفية استخدام البايت المخزنة في دفق لإخراج HTML.

آخذ الدفق وإنشاء StreamReader:

            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);

ثم، في جسم كائن البريد، قرأت محتويات الدفق باستخدام StreamReader:

mail.Body = reader.ReadToEnd();

هذا كل شئ. ما رأيك؟

نصائح أخرى

يمكنك استخدام رسالة MIME متعددة الأقليص وتمرير الدفق إلى منشئ البديل أيضا، فقط لا تغلق الدفق أو تنظيفه حتى بعد إرسال الرسالة (استدعاء mailmessage.dispose () لمعالجة التنظيف لك إذا تحب). إذا ذهبت مع الحل الخاص بك، فتأكد من تعيين mail.isbodyhtml إلى TRUE من أجل نوع المحتوى للتعيين بشكل صحيح وإلا فقد لا يعرض عميل البريد المستقبلي HTML ك HTML لأن HTML لأنه سيعتقد أنه نص عادي. إذا كان إخراج البريد يبدو مضحكا في عميل البريد الخاص بك، فمن المحتمل أن يحدث ذلك.

سيبدو الرمز شيئا مثل هذا (اقتطاعه فقط للأجزاء ذات الصلة):

MailMessage message = new MailMessage();
message.AlternateViews.Add(new AlternateView(stream, new ContentType("text/HTML"));
// do NOT set Body, IsBodyHtml, or ContentType on MailMessage or 
// you'll mess up the mime types

smtpClient.Send(message);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top