תוכנה לשליחת אימיילים
-
ביקשו ממני לעשות תוכנה לשליחת הודעות דוא"ל לרשימת אנשים
בצירוף מכתב עם פרטים אישיים לכל נמען שיצטרך לעבור מיזוג דואר בוורד.בהתחלה חשבתי לעשות את זה באקסס, למזג את הרשימה הנבחרת לקובץ וורד,
ולעשות לולאה שיעבור על כל הרשימה, ידפיס לPFD וישלח לאימייל.
אבל נראה לי שאהיה טיפש אם לא אנסה לעשות את זה בC# עם כאלה מדריכים כמו כאן בפורום.אז במחשבה שניה, אני רוצה לעשות את זה בC#.
אבל, איך אני מתחיל שם?אני מקוה שיהיה לכם איזה פתח להסביר לבור כמוני מאיפה להתחיל...
תודה
פורסם במקור בפורום CODE613 ב04/06/2017 15:54 (+03:00)
-
אתה יכול גם בC# להשתמש עם מיזוג דואר לוורד.
ההעדפה שלי לוורד במקרים כאלו היא בגלל הגמישות והכח שאתה נותן למשתמש הקצה, בלי כל מאמץ מצדך.אגב, אם יש לך קובץ אקסל, עם עמודה של דוא"ל, אתה יכול בלי שום דבר, רק עם וורד, למזג מסמך מסמך למייל - עם אאוטלוק לשליחה.
ואם בכל זאת תרצה שזה ייסגר לPDF, אתה יכול ליצור מסמך וורד עם VBA, שסוגר ושולח רשומה רשומה.
ואם + כל זה, תרצה לנסות את זה בC#, אולי הכי זריז יהיה לעשות תוסף לוורד בC#, שיממש את מה שאתה רוצה...פורסם במקור בפורום CODE613 ב04/06/2017 16:01 (+03:00)
-
אני הייתי מעדיף לעשות את זה בלי התערבות של אאוטלוק.
וזה דוקא היה נחמד שיהיה תוסף לוורד.
אז מאיפה אני יכול להתחיל?
לעשות תוכנית נפרדת שיעבוד עם הנתונים ששם הוא יוכל להכניס את הפרטים שהוא רוצה או שאת זה אני גם יכול להכניס בתוסף?עברתי על המדריך של וובמאסטר על C# וWPF.
שיחקתי עם הרבה אופציות שלו, אבל אני צריך משהו ממשי להתחיל לעבוד...תודה
פורסם במקור בפורום CODE613 ב04/06/2017 19:39 (+03:00)
-
מלא, הנה דוגמא קטנה שכתבתי בעבר, באקסס.
http://code.613m.org/viewtopic.php?f=9&t=392
(זה היה אגב בהמשך למשהו ששאלת...)עכשיו, תעשה העדבק לVB.NET, ותנסה להתאים את הקוד לשם.
אח"כ, תתחיל לשכתב אותו לC#, או, לחילופין, יש לך כאן כלי שממיר מ VB.NET לC#.
http://converter.telerik.com/מצטער שעיתותי אינם בידי כעת לטפל בזה יותר לעומק ולהעלות לכאן דוגמא משמעותית.
והנה דוגמא מצויינת של ארכיטקט בנושא מיזוג הדואר
http://code.613m.org/viewtopic.php?f=1&t=259
(פותח על אקסס, אבל אפשר דיי בקלות להמיר לדוטנט)פורסם במקור בפורום CODE613 ב04/06/2017 20:58 (+03:00)
-
שליחת רשומה רשומה מחייבת שמירה לדיסק כל פעם.
ומה אז? שליחה כקובץ מצורף בPDF.
זה מעצבן. האוטלוק עושה את העבודה כ"כ יותר טוב.
אם ההרצה של האוטלוק נעשית סתם ע"י הפעלת mailto אז צריך לבנות תוכנה שמטפלת בפרוטוקול הזה והיא תקבל את הטקסט ואת הכתובת לשליחה.פורסם במקור בפורום CODE613 ב04/06/2017 21:39 (+03:00)
-
זה לא mailto למיטב זכרוני. אלא הוא ממש מממש את האאוטלוק מאחורי הקלעים.
בכל מקרה אם הוא היה הולך על אאוטלוק, הוא לא היה צריך כלום, לבד מקובץ אקסל מוקלד עם כל העמודות, ועמודה של מייל כמובן.אני חושב ש"מלא" רוצה על הדרך לעשות פרוייקט חביב, וזו הזדמנות....
פורסם במקור בפורום CODE613 ב04/06/2017 21:43 (+03:00)
-
אני ינסה לבדוק אם ההוא את האפשרות של שליחה דרך אאוטלוק ללא קובץ PDF ונראה מה יהיו חלומותיו,
אולי הוא רוצה שזה יוצג בצורה מכובדת.ובנוגע להערת קליק-און, אכן היה לי הזדמנות לקפוץ לאיזה פרוייקט. משהו רציני, לא אקסס עלוב :lol:
אבל עם התחביב אסתדר כבר... חכו לשאלות הבאות על איזה רעיון חדש...פורסם במקור בפורום CODE613 ב04/06/2017 22:26 (+03:00)
-
אני זוכר שביקשו ממני פעם לעשות משהו כזה.
מי שביקש ממני היה מישהו שהיה מקורב לגדולי ישראל גם הספרדים וגם האשכנזים.שלחתי אותו לפני הכל לבדוק עם גדולי ישראל האם זה יעבור....
והבנתי ממנו שזה לא פשוט כ"כ (הבעיות העיקריות זה הדיוק, והחשש מבאגים)ככה שכדאי לבדוק קודם אצלם....
פורסם במקור בפורום CODE613 ב04/06/2017 23:02 (+03:00)
-
אני ינסה לבדוק אם ההוא את האפשרות של שליחה דרך אאוטלוק ללא קובץ PDF ונראה מה יהיו חלומותיו,
אולי הוא רוצה שזה יוצג בצורה מכובדת.ובנוגע להערת קליק-און, אכן היה לי הזדמנות לקפוץ לאיזה פרוייקט. משהו רציני, לא אקסס עלוב :lol:
אבל עם התחביב אסתדר כבר... חכו לשאלות הבאות על איזה רעיון חדש...לא מתכוון להפוך את האשכול לבמה לרעיונות. אבל אם כבר.. עדיין אין אתר השבת אבידה ארצי / עולמי (זה יכול להיות אפילו רווחי כשיהיה בו פרסומות).
פורסם במקור בפורום CODE613 ב05/06/2017 00:16 (+03:00)
-
אני עדיין לא מחפש משהו חוצה ארצות, כי אני מפחד בטוח להיתקע...
ובנוגע ללוח טהרה, רחמים עשה לוח באקסל, ולא עשה שום חישובים רק רישום רגיל,
ובשעתו זכור לי שאמר שאין אישור מרבנים לעשות את זה ממוחשב. כמו שכתב קליק-אוןפורסם במקור בפורום CODE613 ב05/06/2017 11:20 (+03:00)
-
אז מה שנשאר שהוא/אני כן רוצה להדפיס את לPDF ולשלוח כקובץ מצורף. כי בשליחה באימייל רגיל הוא לא יכול להכניס את הבלנק שלו וכו' והעיצוב בורח לו בדרך...
השאלה מאיפה להתחיל את זה?
אם אני עושה תוסף לוורד אז אני יכול להכליל לו את הכל בתוסף הזה, שיהיה לו חלון של הגדרת כתובת המייל שלו והסיסמה.
ואת רשימת השמות בעצם אני גם יכול לטעון לו כך מתוך התוסף שייפתח לו חלון C# ששם יהיה לו את הנתונים [שהם יאוחסנו בקובץ נתונים של אקסס]?
אם כן, אז ההודעה שclickone כתב כאן בעצם איננה במקומה, לא?אשמח לכל טיפת הכוונה והדרכה.
פורסם במקור בפורום CODE613 ב05/06/2017 18:38 (+03:00)
-
בקיצור, דיברתי שוב עם ההוא שביקש לי את זה,
והתחוור שזה פרוייקט מורכב יותר מלשלוח מכתב פשוט
הוא רוצה לצרף קבצים נוספים ולסנן כל מיני נתונים.
שעד שאני ילמד את הכל בC# כשאני עדיין מתחיל של מתחיל שלו, אז יהיה פסח X2אז נראה לי שאני יירד מלעשות את זה שם,
והשאלה שלי היא עכשיו, אם אקסס יוכל לתמוך בשליחה של כמות גדולה של דואלים או שהוא ייתקע?
אולי אני יעזוב בכלל את הפרוייקט ודי.פורסם במקור בפורום CODE613 ב05/06/2017 23:31 (+03:00)
-
בעבר צירפתי פה מחלקה לשליחת מיילים מגימייל דרך C#.
אתה יכול לצרף אותה לפרוייקט שלך.והנה מימוש שלי לאפשר ללקוח שליחת מייל בפרוייקט WEB
(ASP.NET MVC)הנה קוד הHTML (משתמש בrazor):
כמו כן אני משתמש בספריות: bootstrap3 - עבור העיצוב
select2 - לא חובה
CKEditor - כדי לתת למשתמש להזין טקסט בפורמט HTML@model ContactApp.UI.ViewModel.MessageToContactVM @{ ViewBag.Title = "כתיבת הודעה"; } @Styles.Render("~/bundlesContent/datepicker") <script src="~/Scripts/ckeditor/ckeditor.js"></script> <script src="~/Scripts/ckeditor/config.js"></script> <link href="~/Scripts/ckeditor/styles.js" rel="stylesheet" /> <div class="row col-lg-12"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">שליחת מייל</h3> </div> @using (Html.BeginForm("Create", "Email", FormMethod.Post)) { <div class="panel-body"> @Html.AntiForgeryToken() <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <legend>כתוב הודעה</legend> <div class="row"> <div class="col-md-12"> <div class="form-group "> @Html.LabelFor(model => model.AllContactsId, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.ListBoxFor(model => model.AllContactsId, new SelectList(ViewBag.AllContactsList, "Id", "FullName", null), new { @class = "form-control select2-general",id="allContactsList" }) @Html.HiddenFor(model => model.ToContactsId, new { id="toContactsId"}) @Html.ValidationMessageFor(model => model.AllContactsId, "", new { @class = "text-danger" }) </div> </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group "> @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) </div> </div> <div class="form-group "> @Html.LabelFor(model => model.Body, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.TextAreaFor(model => model.Body, new { @class = "form-control" ,id="editor1"} ) <script> CKEDITOR.replace('editor1'); </script> @Html.ValidationMessageFor(model => model.Body, "", new { @class = "text-danger" }) </div> </div> </div> <div class="col-sm-6"> </div> </div> </div> </div> <div class="panel-footer"> <div class="row"> <div class="form-group"> <div class="col-md-12"> <a href="" class="btn btn-primary btn-small pull-left ">ביטול</a> <input type="submit" value="שלח" class="btn btn-primary btn-small pull-left" /> </div> </div> </div> </div> } </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/datepicker") <script> $(".select2-general").select2({ language: "he", dir: "rtl" }); $('#allContactsList').on('select2:select select2:unselect', function (e) { var items = $(this).val(); $('#toContactsId').val(items); }) $('form').submit(function () { //alert(CKEDITOR.instances.editor1.getData()); $("input[Body]").html(CKEDITOR.instances['editor1'].getData()); }) </script> }
והנה הקוד בצד השרת ששולח את ההודעה:
[HttpPost, ValidateInput(false)] public async Task<ActionResult> Create(MessageToContactVM message) { if (ModelState.IsValid) { //לשנות למזהה של בעל התוכנה message.FromContact = 3; message.DateSend = DateTime.Now; message.Status = (int)StatusMessage.Send; message.TypeSend = (int)TypeSendMessage.Email; var gmailMssg = new MessageGmail() { Subject = message.Title, //אני עוטף את התוכן שהמשתמש הזין בדיב חיצוני, כדי ליישר את המייל לימין //כמו כן, אולי זה יכול לעזור גם לאבטחה??? Body = "<div style=\"direction:rtl\">" + message.Body + "</div>", IsBodyHtml = true }; //מאפשר שליחת אותה הודעה לנמענים מרובים foreach (var item in message.AllContactsId) { var temp = await Repository.Get<ContactVM>(item) as ContactVM; gmailMssg.ToList.Add(temp.FullName, temp.Email.Split(',')[0]); } try { var success = SendGMail.SendEMail(gmailMssg); await MapObjToUI.CreateObjInDAL(message); } catch (Exception ex) { throw ex; } return RedirectToAction("Index"); } await LoadParameterForViewBagCreateViewAsync(); return View(); }
וככה זה נראה:
זה ההתחלה, ואתה יכול לקחת את זה הלאה לאן שאתה רוצה.
אפשר גם לצרף קבצים על ידי שימוש במאפיין:gmailMssg.ListFileAttachment.Add()
בהצלחה!
מקווה שקצת עזרתי.פורסם במקור בפורום CODE613 ב06/06/2017 01:19 (+03:00)
-
@דוד ל.ט.
עזוב אקסס זה לא אופציה בכלל.
בכמה מיילים מדובר ביום, סדר גודל?
והאם את תוכן המייל צריך עיצוב משמעותי או די פשוט?UY, האנשים האלה לא מוותרים...
אני משתגע כל פעם מחדש, איך יש לכם עצבים לכל השאלות ומתעקשים לעזור, כל החברה פה בפורום, ובפרט ר' דוד היקר.
חן חן.אז אפרט יותר:
הוא לא מדבר על כמות מסויימת ליום, לא יודע כל כמה זמן הוא יישלח מיילים,
בכל שליחה מדובר בכ200-300 מיילים כולו.תוכן המייל והעיצוב של גוף ההודעה זה לא הנושא, את המכתב הוא רוצה שיהיה מעוצב עם בלנק וכו'.
מה שהוא רוצה לעשות:
לשלוח מכתב אישי לכל אחד מהנמענים.
בנוסף, הוא רוצה לצרף פרוספקטים ומסמכים להודעה.
ואופציה שהוא ביקש: שצירוף הקבצים יהיה בבחירה אישית לפי מה שהוא יסמן או שיסתמן לו בתוכנה,
לנמען X לצרף קובץ 1 ו 2
לנמען Y לצרף רק קובץ 1
לנמען Z לצרף רק קובץ 2
וכו' על זה הדרך.בקיצור, זה לא רק מיזוג דואר יבש ושליחה.
הכיוון שלי היה לעשות הדפסה או שמירה בשם שמובנה היום באופיס לPDF של מסמך הוורד,
לכל נמען קובץ נפרד, ששם הקובץ יהיה הקוד המזהה של הלקוח בתוכנה.
אח"כ לעבור עם LOP על כל הקצבים שבתקיה אותה זה עתה יצרתי, ולחפש עם שם הקובץ את כתובת המייל והקבצים שיש לצרף.
לצרפם ולשלוח.פורסם במקור בפורום CODE613 ב06/06/2017 11:56 (+03:00)
-
טוב כעת אפיינת היטב.
לדעתי זה כן רעיון לC#.
מהרגע שיש מסמכים מצורפים אז כל המיזוג דואר של וורד מאבד מערכו.
אתה צריך לשות תוכנה בC, בה יהיה א. מודול שליחת מייל (avr416 כבר כתב לנו כזה) ב. מודול של מיני מיזוג - שילוב תבנית טקסט עשיר עם טוקנים של שדות המיזוג ג. מודול גישה לנתונים כדי לדעת מה לשלוח למי, וכדי לעדכן מה נשלח.אבל יש בעיונת עם השליחה. שליחה של יותר מ200 מיילים ביום דרך SMTP לא מתאפשרת למשל בג'ימייל.
בספקיות אחרות המצב דומה.
אולי בגלל זה צריך להוסיף מודול של תזמון השליחה במנות קטנות בהפרשי כמה שעות.פורסם במקור בפורום CODE613 ב06/06/2017 13:43 (+03:00)
-
@דוד ל.ט.
ב. מודול של מיני מיזוג - שילוב תבנית טקסט עשיר עם טוקנים של שדות המיזוג
את זה ניתן לעשות בקלות על ידי שימוש ב Razor, אם תרצה בהמשך אשתדל להעלות דוגמא שעשיתי בעבר להפקת קבלות בדרך הזו.
אח"כ גם ניתן בקלות להפוך כל HTML ל PDF ולשלוח אותו במייל כרצונך.פורסם במקור בפורום CODE613 ב06/06/2017 14:17 (+03:00)