דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. תוכנה לשליחת אימיילים

תוכנה לשליחת אימיילים

מתוזמן נעוץ נעול הועבר ארכיון code613m
59 פוסטים 8 כותבים 4.0k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #21

    אם דקדקתי טוב במה שכתב מלא, אז המיזוג הוא בהודעה אבל במסמכים המצורפים אין שתילה של שדות ולכן הhtml לא צריך המרה לPDF.

    פורסם במקור בפורום CODE613 ב06/06/2017 15:47 (+03:00)

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1
    • מ מנותק
      מ מנותק
      מלא 0
      כתב ב נערך לאחרונה על ידי
      #22

      @דוד ל.ט.

      אם דקדקתי טוב במה שכתב מלא, אז המיזוג הוא בהודעה אבל במסמכים המצורפים אין שתילה של שדות ולכן הhtml לא צריך המרה לPDF.

      עוד מעט אגיע למחשב שלי בס"ד, אז אבדוק את מה שכתוב ואמשיך עם הנדנודים מאן להתחיל ולאן להמשיך.

      אבל, הוא כן רוצה שהמיזוג יהיה בקובץ PDF, לא בדווקא בוורד. העיקר שהמכתב יהיה PDF
      התוכן בגוף ההודעה לא מעניין אותו איך זה ייראה.

      פורסם במקור בפורום CODE613 ב06/06/2017 15:59 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #23

        הנה הקוד שאתה צריך כדי ליצור מיזוג בקובץ PDF.
        אתה צריך לכלול את הספריה הבאה בפרוייקט שלך: https://www.nrecosite.com/pdf_generator_net.aspx
        אם אתה רוצה שקובץ הPDF יהיה מעוצב יפה, אתה צריך ליצור HTML ואח"כ להמיר אותו לPDF.
        חשוב- תוודא שההפניות לקבצי הCSS שלך יהיו הפניות מלאות ולא חלקיות (דהיינו נתיב מוחלט), אח"כ הספריה הנ"ל לא תדע לטעון אותם.

        בהצלחה!

        using NReco.PdfGenerator;
        using System.IO;
        using System.Threading.Tasks;
        using System.Web.Mvc;
        
        namespace EmailService
        {
            /// <summary>
            /// מחלקה לדוגמה שמכילה את המידע העדכני עבור יצירת הקובץ
            /// </summary>
            public class ContentFile
            {
                public int Id { get; set; }
                public string Name { get; set; }
                public string CustomerName { get; set; }
            }
        
            public static class CreatePdfFile
            {
                /// <summary>
                /// יוצר קובץ פי.די.אף מקומי על השרת
                /// </summary>
                /// <param name="content"></param>
                /// <param name="fileName"></param>
                /// <param name="path"></param>
                /// <param name="controller"></param>
                /// <returns></returns>
                public static async Task<bool> CreateFile(ContentFile content, string fileName, string path, ControllerContext controller)
                {
                    bool success = false;
        
                    var stream = await CreateStream(content, controller);
        
        
                    using (FileStream fs = new FileStream(fileName, FileMode.Create))
                    {
                        stream.WriteTo(fs);
                        success = true;
                    }
                    
                    return success;
                }             
        
                /// <summary>
                /// מחזיר סטרים של קובץ פי.די.אף בלא לשמור על השרת
                /// יותר נח כאשר רוצים לשלוח מייל או לתת ללקוח להוריד מהדפדפן
                /// כך אתה מפחית את העומס מהשרת שלך
                /// </summary>
                /// <param name="content"></param>
                /// <param name="controller"></param>
                /// <returns></returns>
                public static async Task<MemoryStream> CreateStream(ContentFile content, ControllerContext controller)
                {
                    var html = await CreateHtmlToString(content, controller);
        
                    MemoryStream memory = new MemoryStream();
        
                    //משתמש בספריה NReco.PdfGenerator - ניתנת להתקנה דרך NuGet
        
                    var htmlToPDF = new HtmlToPdfConverter();
                    var pdfBytes = htmlToPDF.GeneratePdf(html);
                    htmlToPDF.CustomWkHtmlArgs = " --load-media-error-handling ignore ";
                    htmlToPDF.GeneratePdf(html, null, memory);
                    memory.Position = 0;
                    return memory;
                }
               
                private static async Task<string> CreateHtmlToString(ContentFile content, ControllerContext controller)
                {             
                    //הנתיב צריך להפנות לקובץ ההטמל הנכון
                    string html = RenderViewToString(controller,
                        "~/Views/Email/CreateFileInHtml.cshtml",
                        content, true);
        
                    return html;
                }
        
                
                private static string RenderViewToString(ControllerContext context,
                                           string viewPath,
                                           object model = null,
                                           bool partial = false)
                {
                    // first find the ViewEngine for this view
                    ViewEngineResult viewEngineResult = null;
                    if (partial)
                        viewEngineResult = ViewEngines.Engines.FindPartialView(context, viewPath);
                    else
                        viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);
        
                    if (viewEngineResult == null)
                        throw new FileNotFoundException("View cannot be found.");
        
                    // get the view and attach the model to view data
                    var view = viewEngineResult.View;
                    context.Controller.ViewData.Model = model;
        
                    string result = null;
        
                    using (var sw = new StringWriter())
                    {
                        var ctx = new ViewContext(context, view,
                                                    context.Controller.ViewData,
                                                    context.Controller.TempData,
                                                    sw);
                        view.Render(ctx, sw);
                        result = sw.ToString();
                    }
        
                    return result;
                }
        
            }
        }
        

        פורסם במקור בפורום CODE613 ב06/06/2017 16:57 (+03:00)

        תגובה 1 תגובה אחרונה
        3
        • מ מנותק
          מ מנותק
          מלא 0
          כתב ב נערך לאחרונה על ידי
          #24

          תודה רבה על התשובות המפורטות.

          אני מתחיל פרה פרה.

          1. הצלחתי להדפיס קוד HTML לPDF.
            אותיות עבריות הוא מדפיס לג'יבריש, אני מפחד שהוא חסיד סאטמר. :lol: :lol:
          2. יש איזה קוד שיכול להמיר טקסט מ richtextbox ל HTML ? אני עם הארץ גמור בHTML.

          פורסם במקור בפורום CODE613 ב07/06/2017 22:02 (+03:00)

          תגובה 1 תגובה אחרונה
          0
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #25

            @מלא

            1. הצלחתי להדפיס קוד HTML לPDF.
              אותיות עבריות הוא מדפיס לג'יבריש, אני מפחד שהוא חסיד סאטמר. :lol: :lol:

            אתה צריך להוסיף לתגית הhead של הדף את התגית הזאת:

            <meta charset="utf-8" />
            

            והדף עצמו נראה כך:
            <!DOCTYPE html>
            <html lang="he">
            <head>
            <meta charset="utf-8" />
            <title>זה הכותרת של הדף</title>
            <!--כאן אתה מוסיף הפניה לקובץ הCSS של הגדרות העיצוב -->

            </head>
            <body>
            כאן נמצא התוכן שאתה רוצה שהמשתמש יראה...
            </body>
            </html>
            

            הנה קישור למדריך HTML בסיסי בעברית, ולא חסרים כאלה במרשתת

            פורסם במקור בפורום CODE613 ב07/06/2017 22:57 (+03:00)

            תגובה 1 תגובה אחרונה
            4
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              כתב ב נערך לאחרונה על ידי
              #26

              מלא, אם אתה משתמש בעורך הויזואלי שאברהם הביא בדוגמא, אז העתק הדבק מRTF או וורד מעביר את העיצוב דיי בשלימות.

              פורסם במקור בפורום CODE613 ב07/06/2017 23:56 (+03:00)

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              תגובה 1 תגובה אחרונה
              1
              • מ מנותק
                מ מנותק
                מלא 0
                כתב ב נערך לאחרונה על ידי
                #27

                אני מידי מתחיל בשפה הזו, ואני מתחיל להתבלבל...
                עכשיו אני עומד בשלב של יצירת קבצי PDF עם שמות.

                איפה אני הולך לכתוב את הטקסט שאני רוצה לקבל לקובץ? ואיך אני ממזג לו את השמות.

                בינתיים הבאתי את הספריה של nreco
                והצלחתי לייצא כמה מילים לPDF ככה:

                string strWride = "<head>" + "<meta charset = utf-8" + "<body>" + 
                                "<h1>" + "this is the titl " + "</h1>" + "<br/>" +
                                "this is a new row" + "</body>" + "</head>";
                            var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
                            htmlToPdf.GeneratePdf(strWride, null, "e:/pdffile.pdf");
                

                יצרתי דף HTML ואני לא יודע איך אני קורא לייצא אותו.

                פורסם במקור בפורום CODE613 ב08/06/2017 02:30 (+03:00)

                תגובה 1 תגובה אחרונה
                0
                • S מנותק
                  S מנותק
                  softs
                  כתב ב נערך לאחרונה על ידי
                  #28

                  לא צריך להמציא את הגלגל, מיקרוסופט בנו מפלצת שנקראת SQL Reporting Services (בקיצור SSRS), שיכולה לענות על רוב הדרישות הנ"ל ללא שורת קוד אחת, ועבור מה שכן צריך לפתח, יש לה API מסודר.

                  למי שיש רישיון SQL זה כלול.
                  למי שיש אקספרס צריך להתקין את גירסת האקספרס המוגבלת יחסית

                  .

                  פורסם במקור בפורום CODE613 ב08/06/2017 14:07 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #29

                    זה לא נקרא להמציא את הגלגל.
                    SQL Reporting Services זה מפלצת, ופה מישהו ביקש תוכנה ייעודית.

                    פורסם במקור בפורום CODE613 ב08/06/2017 15:13 (+03:00)

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    2
                    • A מנותק
                      A מנותק
                      avr416
                      כתב ב נערך לאחרונה על ידי
                      #30

                      @מלא

                      איפה אני הולך לכתוב את הטקסט שאני רוצה לקבל לקובץ? ואיך אני ממזג לו את השמות.

                      יצרתי דף HTML ואני לא יודע איך אני קורא לייצא אותו.

                      אני המלצתי לך להשתמש ברייזור, כי אני לא מכיר את מה שsoft המליץ.
                      בשביל רייזור אתה צריך פרוייקט asp.net mvc שמשתמש במנוע של רייזור.
                      הRazor בעצם מאפשר לך לכתוב קוד HTML ולשלב בתוכו משתנים של C # בקלות, כך שכאשר הדף מרונדר הוא מציג את תוכן המשתנה במקום המתאים.

                      יש לך כאן מדריך בעברית ASP.NET MVC

                      בהצלחה!

                      פורסם במקור בפורום CODE613 ב08/06/2017 15:13 (+03:00)

                      תגובה 1 תגובה אחרונה
                      1
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        כתב ב נערך לאחרונה על ידי
                        #31

                        @מלא

                        יצרתי דף HTML ואני לא יודע איך אני קורא לייצא אותו.

                        או לטעון את תוכן הקובץ למשתנה:

                        string strWride = File.ReadAllText(@"e:\קובץ שיצרת.html");
                        var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
                        htmlToPdf.GeneratePdf(strWride, null, "e:/pdffile.pdf");
                        

                        יותר פשוט להשתמש במתודה שלהם שמקבלת כפרמטר נתיב לקובץ:

                        var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
                        htmlToPdf.GeneratePdfFromFile(@"e:\קובץ שיצרת.html" , null, "e:\\pdffile2.pdf");
                        

                        פורסם במקור בפורום CODE613 ב08/06/2017 15:40 (+03:00)

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        3
                        • מ מנותק
                          מ מנותק
                          מלא 0
                          כתב ב נערך לאחרונה על ידי
                          #32

                          @avr416

                          @מלא

                          איפה אני הולך לכתוב את הטקסט שאני רוצה לקבל לקובץ? ואיך אני ממזג לו את השמות.

                          יצרתי דף HTML ואני לא יודע איך אני קורא לייצא אותו.

                          אני המלצתי לך להשתמש ברייזור, כי אני לא מכיר את מה שsoft המליץ.
                          בשביל רייזור אתה צריך פרוייקט asp.net mvc שמשתמש במנוע של רייזור.
                          הRazor בעצם מאפשר לך לכתוב קוד HTML ולשלב בתוכו משתנים של C # בקלות, כך שכאשר הדף מרונדר הוא מציג את תוכן המשתנה במקום המתאים.

                          יש לך כאן מדריך בעברית ASP.NET MVC

                          בהצלחה!

                          בhtmlPage שאני מייצר מתוך הWPF שלי אני לא יכול לשלוף משתנים בהפרוייקט?
                          אני צריך לפתוח פרוייקט חדש?

                          פורסם במקור בפורום CODE613 ב08/06/2017 17:02 (+03:00)

                          תגובה 1 תגובה אחרונה
                          0
                          • dovidD מנותק
                            dovidD מנותק
                            dovid ניהול
                            כתב ב נערך לאחרונה על ידי
                            #33

                            avr416 איך רצית שהוא יעשה תוכנה וובית? יקים אתר?

                            פורסם במקור בפורום CODE613 ב08/06/2017 17:26 (+03:00)

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            1
                            • A מנותק
                              A מנותק
                              avr416
                              כתב ב נערך לאחרונה על ידי
                              #34

                              יריץ אותו לוקלית.
                              זכורני גם שישנה אפשרות לשלב את המנוע של רייזור בפרוייקט רגיל. נראה לי שפעם ראיתי את זה איפהשהו..

                              פורסם במקור בפורום CODE613 ב08/06/2017 18:07 (+03:00)

                              תגובה 1 תגובה אחרונה
                              1
                              • A מנותק
                                A מנותק
                                avr416
                                כתב ב נערך לאחרונה על ידי
                                #35

                                הנה הספריה
                                https://antaris.github.io/RazorEngine/
                                הנה מדריך בנושא
                                http://www.brainysolutions.org/Blog/Detail/329/generate-html-email-text-using-razor-in-net-console-application

                                וחוצמזה.. לא הבנתי שהוא מחפש דווקא תוכנה שולחנית, ולא משהו וובי :shock:

                                פורסם במקור בפורום CODE613 ב08/06/2017 18:13 (+03:00)

                                תגובה 1 תגובה אחרונה
                                1
                                • מ מנותק
                                  מ מנותק
                                  מלא 0
                                  כתב ב נערך לאחרונה על ידי
                                  #36

                                  מה חסר לי כל הדברים האלו, למה שאני לא ישתמש עם קובץ וורד
                                  שיקבל את הנתונים עם שדה מיזוג, ולשמור את הקובץ כ PDF?

                                  יש לי את זה שעושה את זה מצויין,
                                  יהיה לי בעיות עם זה?

                                  var applicition = new Microsoft.Office.Interop.Word.Application();
                                              var document = new Microsoft.Office.Interop.Word.Document();
                                             
                                              document = applicition.Documents.Add( @"E:\WordFile\File1.docx");
                                  
                                              foreach(Microsoft.Office.Interop.Word.Field field in document.Fields)
                                              {
                                                   if (field.Code.Text.Contains("Title"))
                                                  {
                                                      field.Select();
                                                      applicition.Selection.TypeText("Aharon");
                                                  }
                                                  else if(field.Code.Text.Contains("FirstName"))
                                                  {
                                                      field.Select();
                                                      applicition.Selection.TypeText("Josef");
                                                  }
                                                  else if (field.Code.Text.Contains("lastName"))
                                                  {
                                                      field.Select();
                                                      applicition.Selection.TypeText("David");
                                                  }
                                              }
                                  
                                              document.SaveAs2(@"c:\mynePDFfromWord.pdf", FileFormat: Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF);
                                              document.Close(false);
                                  

                                  פורסם במקור בפורום CODE613 ב08/06/2017 21:17 (+03:00)

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • dovidD מנותק
                                    dovidD מנותק
                                    dovid ניהול
                                    כתב ב נערך לאחרונה על ידי
                                    #37

                                    יש כאן הרבה שלבים:
                                    א. מיזוג מסמך א' ושמירת כל פריט כPDF נפרד
                                    ב. כנ"ל מסמך ב וכו'
                                    ג. מיזוג רשימה עם גוף הודעה וצירוף קובץ רלוונטי מהאמורים לעיל.

                                    מה הגישה שלך לפתור את העניין.
                                    הקוד שהבאת יפה מאוד, אבל: 1. אתה שומר הכל לקובץ PDF גדול, 2. אתה עוד לא בשלב שאתה מצרף את דף הPDF להודעה התאימה שהיא עצמה גם ממוזגת.

                                    פורסם במקור בפורום CODE613 ב09/06/2017 00:42 (+03:00)

                                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                    תגובה 1 תגובה אחרונה
                                    1
                                    • מ מנותק
                                      מ מנותק
                                      מלא 0
                                      כתב ב נערך לאחרונה על ידי
                                      #38

                                      הקבצים האחרים הם קבצים זהים לכל הרשימה.

                                      רק המכתב האישי משתנה בין שם לשם.

                                      אני חשבתי

                                      1. לטעון את הרשימה.
                                      2. ליצור מסמך PDF לרשומה נוכחית.
                                      3. לשלוח לו הודעה עם הקבצים המצורפים. (צירוף הקבצים כפי שמסומן בשם הנוכחי)
                                        ולהעיף את המכתב באיזה שהוא תקיה, כמכתב שנשלח.
                                        מעבר לרשומה הבאה וכו'.

                                      בצורה הזו יש לי את כל הנתונים הנדרשים ביד מן המוכן, ולא צריך לחפש קובץ ולהתאים לו שם או להיפך.

                                      ודוד, צל"ש.
                                      כ"כ דבקתי בלהבין את מערבולת התווים (המתבהרים לאט לאט...) של C#.
                                      שכבר כמעט שכחתי מה אני צריך, ואתה עדיין מחזיק ראש....
                                      צל"ש רציני.

                                      פורסם במקור בפורום CODE613 ב09/06/2017 01:51 (+03:00)

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • S מנותק
                                        S מנותק
                                        softs
                                        כתב ב נערך לאחרונה על ידי
                                        #39

                                        @דוד ל.ט.

                                        זה לא נקרא להמציא את הגלגל.
                                        SQL Reporting Services זה מפלצת, ופה מישהו ביקש תוכנה ייעודית.

                                        אקדים ואומר שכנראה שהודעה זו לא תשכנע אף אחד מהמאמינים בשרשור זה, אבל את דעתי ארשום, למען התיעוד ההיסטורי.

                                        SSRS הוא חבילה מקיפה לכל נושא ההפצה, וקראתי בדיוק כמוך מה הוא ביקש. ולכן אני ממליץ על SSRS אפילו למי שלא נגע בזה מעולם, זה הרבה פחות כואב והרבה יותר יעיל מהפתרונות שמסתמנים פה, מה גם בדרך כלל לקוח לא צריך תוכנה ייעודית, הוא צריך פתרון. לפלא בעיני אם הלקוח ביקש תוכנה ייעודית דייקא.

                                        ל SSRS יש עקומת למידה ממש ממש נוחה והוא אפילו לא דורש כישורי תכנות עבור רוב הדברים, וכשאני כותב מפלצתי אני מתכוון לכמות הפיצ'רים הגדולה, אולי זה הפחד מהלא מוכר (או ממפלצות), אבל ויז'ואל סטודיו מפלצת גדולה פי כמה, ולמרות זאת ממליצים פה לכל דכפין להתחיל עם VS.

                                        פורסם במקור בפורום CODE613 ב11/06/2017 12:22 (+03:00)

                                        תגובה 1 תגובה אחרונה
                                        3
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          כתב ב נערך לאחרונה על ידי
                                          #40

                                          soft, דבר ראשון לא מבין למה אתה חושב שדעתך לא משכנעת, אני אישית מושפע ממנה מאוד.
                                          דבר שני פתרון של תוכנה קטנה וניידת מול פתרון של מערכת מבוססת על תשתית תוכנה הוא שמים וארץ. תוכנה אתה לא צריך שום ציוד או תוכנה מלבד קובץ EXE או תיקייה קטנה עם כמה קבצים. ברגע שזה עובד אתה אומר שלום למפתח ולאיש המחשבים וזה עובד עד ביאת הגואל. פתרון שמצריך תשתית כמו שרת לוקלי או מרוחק זה להתחתן. זה מחייב תחזוקה - שרת server 2003 שהיה הכי נוצץ לפני כמה שנים הוא מחדל בטיחותי כיום.
                                          אני פיתחתי תוכנה קטנה למישהו לפני 8 שנים והוא לא היה צרך אותי אפי' פעם את מאז והוא משתמש בה בכל עת. ברור שאם הייתי מבסס אותה על SQLSERVER למשל, הייתי שומע ממנו כל שנה וחצי.
                                          אינני מבין את ההשוואה בין VS שזו תוכנה למחשב המפתח לSSRS שזה תשתית למחשב הלקוח-המשתמש או לשרת שישמש אותו לאורך כל ימי האפליקציה.

                                          פורסם במקור בפורום CODE613 ב11/06/2017 23:42 (+03:00)

                                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                          תגובה 1 תגובה אחרונה
                                          2

                                          • 1
                                          • 2
                                          • 3
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום