וובמאסטר - תיכנות ובניית אתרים

מדריך CSHTML - שליחת מיילים מהאתר באמצעות CSHTML

ליאור זמיר ,‏ ג'ון ברייס הדרכה‏ ‏/‏ 30 יוני, 2010
F+
F-
דואר אלקטרוני הוא אחד האמצעים הנפוצים והנוחים ביותר לתקשורת ישירה עם הגולשים באתר. אנחנו יכולים להשתמש בדואר אלקטרוני בטופס יצירת קשר לאימות הרשמה לאתר, ניוזלטר לעדכונים על בסיס קבוע ועוד.

במדריך זה נכיר את יכולות הדוא"ל של CSHTML על ידי בנייה של טופס יצירת קשר לאתר. לצורך הלימוד כדאי שיהיה ברשותכם כתובת של שרת דואר פעיל (SMTP) דרכו נשלח את המיילים. לצורך ההדגמה נשתמש בשרתי הדואר של Gmail עבור שליחת ההודעות. במידה וספק האחסון לאתר שלכם פתח עבורכם שרת דואר, השתמשו בו.

כדי לשלוח מייל ב- CSHTML נשתמש באובייקט Mail, שמקבל הגדרות של שרת דואר (כתובת, פורט- בדרך כלל 25, שם משתמש וסיסמא), כתובת המייל של היעד, נושא ותוכן ההודעה. כפי שנראה בהמשך, ניתן גם לשלוח קבצים מצורפים (Attachments).

יצירת טופס צור קשר

בדוגמה נשתמש ב-2 דפים: הראשון יהיה הטופס להזנת הפרטים, השני יבצע את שליחת ההודעה ויציג הודעת אישור לגולש.

נתחיל בבנייה של טופס "צור קשר", שמכיל 4 שדות טקסט בטופס: שם, מייל, נושא ותוכן ההודעה.
  1. באתר חדש או באתר קיים כלשהו, צור קובץ CSHTML חדש בשם contact.cshtml.

  2. החלף את קוד ה-HTML הקיים בקוד הבא:

    <!DOCTYPE html>
    <html>
        <head>
            <title></title>
        </head>
        <body>
            <h2>Contact Me</h2>
            <form method="post" action="SendMail.cshtml">
                <div>
                    Your name:
                    <input type="text" name="Name" />
                </div>
                <div>
                Your email:
                <input type="text" name="Email" />
                </div>
                <div>
                    Subject:
                    <input type="text" name="Subject" />
                </div>
                <div>
                    Message: <br />
                    <textarea cols="30" rows="5" name="Message"></textarea>
                </div>
                <div>
                    <input type="submit" value="Send!" />
                </div>
            </form>
        </body>
    </html>
  3. הרץ את הדף בדפדפן ווודא שקיבלת טופס הנראה כך:

    image

יצירת טופס צור קשר

הדף הבא יקבל את נתוני הטופס וישלח את ההודעה לתיבת המייל של מנהל האתר.
  1. צור קובץ CSHTML חדש בשם sendmail.cshtml.

  2. צור בלוק קוד חדש בראש הקובץ ובו הקוד הבא:

    @{
        var Contact_Name = Request["Name"];
        var Contact_Email = Request["Email"];
        var Contact_Subject = Request["Subject"];
        var Contact_Message = Request["Message"];
    }
    קוד זה, מגדיר משתנים מקומיים ושומר בהם את הפרטים אותם הזין המשתמש בדף הקודם.

  3. נגדיר את אובייקט ה- Mail כך שיעבוד עם שרת הדואר שלנו (לצורך הדוגמה נשתמש בשרת של Gmail), כש-Mail.SmtpServer מגדיר את כתובת השרת, ו- Mail.SmtpPort מגדיר את מספר פורט ההתחברות לשרת. חשוב! אל תשכחו לכתוב גם את שם המשתמש והסיסמא שלכם, בשדות UserName ו-Password (בעת עבודה מול Gmail שם המשתמש הוא כתובת המייל המלאה – cshtml@gmail.com).

    Mail.SmtpServer = "smtp.gmail.com";
    Mail.SmtpPort = 587;
    Mail.EnableSsl = true;
    Mail.UserName = "Your Gmail User Name";
    Mail.Password = "Your Gmail Password";
  4. לבסוף נבנה את גוף ההודעה ונשלח את המייל ע"י קריאה למתודת Mail.Send. ניתן לעצב את גוף ההודעה ע"י שימוש בתגיות HTML. את כתובת היעד של המייל נגדיר בפרמטר to של מתודת Mail.Send. חשוב! לא לשכוח לשנות את כתובת היעד לכתובת מנהל האתר. Mail.From = Contact_Email;

    var MailBody = "New Message From " + Contact_Name +
    	 " regarding " + Contact_Subject;
    MailBody += "<br /><br />" + Contact_Message;
    
    Mail.Send(to: "you@email.com",
            subject: "New Message from your website regarding " 
    	+ Contact_Subject, body: MailBody);
  5. בחלק ה- HTML של הדף נרצה לתת הודעה למשתמש על שליחת ההודעה.

    <html> 
    <head> 
        <title>Contact Me</title> 
    </head> 
    <body> 
        <h1>Contact Me</h1>
        <h2>@Contact_Name, Thanks for your comment!</h2>
    </body> 
    </html>

    בסה"כ יכיל הקובץ sendmail.cshtml את הקוד הבא:

    @{
        var Contact_Name = Request["Name"];
        var Contact_Email = Request["Email"];
        var Contact_Subject = Request["Subject"];
        var Contact_Message = Request["Message"];
        
        Mail.SmtpServer = "smtp.gmail.com";
        Mail.SmtpPort = 587;
        Mail.EnableSsl = true;
        Mail.UserName = "Your Gmail User Name";
        Mail.Password = "Your Gmail Password";
        
        
        Mail.From = Contact_Email;
       
        var MailBody = "New Message From " + Contact_Name +
    	 " regarding " + Contact_Subject;
        MailBody += "<br /><br />" + Contact_Message;
        
        Mail.Send(to: " you@email.com ",
                subject: "New Message from your website regarding " 
    	+ Contact_Subject, body: MailBody
                );
    }
    
    <html> 
    <head> 
        <title>Contact Me</title> 
    </head> 
    <body> 
        <h1>Contact Me</h1>
        <h2>@Contact_Name, Thanks for your comment!</h2>
    </body> 
    </html>
  6. שמור את השינויים בקובץ sendmail.cshtml והרץ את הדף contact.cshtml. הזן את הפרטים הנדרשים לצורך שליחת המייל ולחץ על Send.

    image


שליחת מייל עם קובץ מצורף

כדי לשלוח מייל עם קובץ מצורף, נשתמש בפרמטר filesToAttach של המתודה Mail.Send(). הפרמטר מקבל אוסף של מחרוזות, כשכל מחרוזת מייצגת את נתיב מלא של קובץ בשרת. בדוגמה זו נשלח לנמען קובץ טקסט שניצור בשרת שלנו.
  1. בתיקיית האתר צרו קובץ טקסט בשם Attachment.txt, וכתבו בו פסקת טקסט כלשהי.

  2. ערוך את הקוד של הדף sendmail.cshtml:

    Mail.From = Contact_Email;
    
    var filesList = new string [] {
            Request.PhysicalApplicationPath + "Attachment.txt"
                    };
    
    var MailBody = "New Message From " + Contact_Name 
    	+ " regarding " + Contact_Subject;
    MailBody += "<br /><br />" + Contact_Message;
    
    Mail.Send(to: " you@email.com",
            subject: "New Message from your website regarding " 
    	+ Contact_Subject, body: MailBody, filesToAttach: filesList);
    הקוד הנ"ל יוצר קשימת מחרוזות שבה כל מחרוזת מציינת נציב מלא לקובץ על גבי השרת. נשתמש במאפיין Request.PhysicalApplicationPath המייצג לנו את הנתיב הנוכחי בשרת, ונשרשר אליו את שם הקובץ להוספה. בנוסף, נעביר את רשימת הקבצים לפונקציה Mail.Send() באמצעות הפרמטר fileToAttach.

ליאור זמיר, ג'ון ברייס הדרכה

כיום אני ה- Webmaster של תוכנית החדשנות של HPE Software.
לפני כן, הייתי מנהל תחום Webmaster ומרצה בכיר בג'ון-ברייס (במשך 9 שנים) בקורסים לפיתוח ותיכנות באמצעות Microsoft .NET, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.
תגיות: ASP.NET‏  /  CSHTML‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות