עיבוד הטופס ושליחת האי-מייל
הקובץ הזה של הסקריפט, תפקידו הוא לבדוק את שדות החובה של הטופס, ובמקרה של שדה ריק (או שדה שמכיל רק רווחים, ללא טקסט) ידפיס הודעת שגיאה. במקרה של שגיאה, הסקריפט לא ינסה לשלוח את הטופס. כאשר הטופס מולא בהתאם, הסקריפט יכין את האי-מייל וינסה לשלוח אותו, כשלבסוף יציג הודעה בדבר הצלחת השליחה.
שדות הטופס שהוגדרו כשדות חובה הן: כתובת הנמען, כתובת המוען, נושא ההודעה וגוף ההודעה. הסקריפט מקזז את הרווחים מהקצוות של השדות: כתובת הנמען, כתובת המוען, שם המוען ונושא ההודעה. הפונקציה trim() מקזזת גם כניסות של שורות חדשות (\n ), ולכן אנו לא משתמשים בפונקציה זו כדי לא לשנות את התוכן של ההודעה. אנו מניחים כי הטופס מולא בהתאם, ובודקים את קיומם של שדות החובה. במקרה של שדה חובה ריק, מדפיסים הודעת שגיאה ומשנים את המשתנה הגלובלי $mail_ok לשקר, כדי לא לשלוח את האי-מייל.
ניתן להוסיף פונקציה לבדיקת התחביר של כתובת האי-מייל, ולהשתמש בפונקציה זו כדי לבדוק אם שדות האי-מייל של הנמען והמוען מייצגים כתובת אי-מייל חוקית. ובמקרה של כתובת אי-מייל לא חוקית, אפשר להציג הודעת שגיאה, ולמנוע את שליחת האי-מייל.
file name: mail_send.inc
<? /* removing space characters from the edges of the data infos *//* | מורידים את כל הרווחים מההתחלה ומהסוף של השדות. | */ |
$_POST[ "mail_to"]= trim( $_POST[ "mail_to"]); $_POST[ "mail_from"]= trim( $_POST[ "mail_from"]); $_POST[ "mail_name"]= trim( $_POST[ "mail_name"]); $_POST[ "mail_subject"]= trim( $_POST[ "mail_subject"]); $mail_ok=true;/* | בתחילה אנו מניחים כי הטופס תקין. נשנה את ערכו במקרה של שגיאה. | */ |
/* checking that the fields are filled ok *//* | בודקים אם כל שדות החובה מלאים. במקרה של שדה ריק, מדפיסים הודעה ומשנים את המשתנה הגלובלי $mail_ok . | */ |
if ( $_POST[ "mail_to"]== "") { echo "<FONT color=\"#FF0000\">נא למלא את השדה 'שלח אל'.</FONT><BR>\n"; $mail_ok= false; } if ( $_POST[ "mail_from"]== "") { echo "<FONT color=\"#FF0000\">נא למלא את השדה 'אי-מייל של השולח'.</FONT><BR>\n"; $mail_ok= false; } if ( $_POST[ "mail_subject"]== "") { echo "<FONT color=\"#FF0000\">נא למלא את השדה 'נושא'.</FONT><BR>\n"; $mail_ok= false; } if ( $_POST[ "mail_body"]== "") { echo "<FONT color=\"#FF0000\">נא למלא את השדה 'הודעה'.</FONT><BR>\n"; $mail_ok= false; } ?>
אם בדיקת שדות הטופס עבר בהצלחה, אנו ננסה לשלוח את האי-מייל. כדי לשלוח אי-מייל צריך להכין את הא-מייל, צריך לדעת את כתובת הנמען, את נושא ההודעה ואת גוף ההודעה (פרמטרים שהם חובה בפונקציה mail()). פרמטר אפשרי בשליחת אי-מייל עם הפונקציה mail(), הוא ה-headers, שמספקים מידע נוסף על האי-מייל. במקרה שלנו אנו משתמשים ב-header של From, שמספק מידע על כתובת המוען (ואפשר גם על שם המוען).
לאחר-מכן אנו שולחים את האי-מייל באמצעות הפרמטרים שהכנו. ושמים את הערך המוחזר ממנו ב-$mail_ok . הפונקציה mail() מחזירה אמת במקרה שהאי-מייל נשלח בהצלחה, ושקר במקרה של כישלון. אם האי-מייל נשלח בהצלחה, אנו נדפיס הודעת הצלחה (מבלי להציג את טופס האי-מייל, ראה מדוע בקובץ mail.php). אם שליחת האי-מייל נכשלה, אנו נדפיס הודעת שגיאה, ונציג את טופס האי-מייל לתיקון.
file name: mail_send.inc (continue)
<? if ($mail_ok)/* | אם הטופס מולא בהתאם, אנו מנסים לשלוח את האי-מייל. | */ |
{ $to=$_POST["mail_to"]; $subject=$_POST["mail_subject"]; $body=$_POST["mail_body"]."\n\n\n\n\n-----------------------------------------------------------\n נשלח באמצעות סקריפט של אלי חן\n Powered By a PHP script by Eli Hen";/* | גוף ההודעה. הוספנו טקסט לסוף ההודעה. ניתן להוסיף כל טקסט שתרצו. | */ |
$headers="From: ".$_POST["mail_from"]."\r\n";/* | ה-headers של אי-מייל. אנו מוסיפים את ה-header של From, כתובת המוען. | */ |
if ($_POST["mail_name"]!="")/* | אם גם השדה של שם המוען הוכנס. | */ |
$headers="From: ".$_POST["mail_name"]." <".$_POST["mail_from"].">\r\n";/* | הצורה של ה-header של From משתנה קצת כאשר מוסיפים שם. | */ |
$mail_ok=@mail($to,$subject,$body,$headers);/* | מנסה לשלוח את האי-מייל. מחזיר אמת כאשר האי-מייל נשלח בהצלחה. | */ |
if ($mail_ok)/* | אם שליחת האי-מייל הצליחה, מדפיסים הודעת הצלחה. | */ |
{ echo "<P><B>האי-מייל נשלח בהצלחה!</B></P>"; echo "<A href=\"mail.php\">שלח אי-מייל חדש</A>"; } else/* | אם שליחת האי-מייל נכשלה, מדפיסים הודעת כשלון. | */ |
{ echo "<P><FONT color=\"#FF0000\"><B>שליחת האי-מייל נכשלה!!!</B> (בדוק את כתובת האי-מייל שאליו אתה שולח)</FONT></P>"; } } ?>
פועל מצויין !! | 09-12-02 07:00 דינו | #416 |
| קשה להאמין אבל פשוט העתקתי את שלושלת הקבצים לשרת שלי והם פעלו מצויין, בלי שום בעיות ובלי שום שינויים !
תודה. |
|
אבל לא כתבתם | 31-10-02 13:01 איתי | #483 |
| איך עושים בדיקה לאימייל... ואם אתה יכול גם להגיד איך עושים בדיקה/אינפוט כדי ששדה מסויים יקבל רק מספרים |
|
בעיה ואני לא יודע מה .... | 02-12-03 15:01 אמיר | #732 |
| שלום , ניסיתי חלק מהתכניקות האלה והכל בסדר עד שהיתה לי בעיה , הבעיה של הבעיה היא שאני לא יודע מה היא כי השרת שלי לא אומר איפה יש לי בעיות ובאיזה שורות, מה יכול לעזור לי להגיד לשרת לתת לי אינפורמציה לגבי בעיה בסקריפט כי ,כרגע כשיש בעיה המסך פשוט נהיה לבן ולא אומר כלום , אני צריך כיוון .... תודה |
|
הסתרת שגיאות | 02-12-03 16:01 אלי חן (מנהל) | #734 |
| בהרבה שרתים מעדיפים לקבוע ש PHP לא תדפיס שגיאות לפלט משיקולי אבטחה.. אבל השגיאות בדר"כ נשמרות בלוג השגיאות (error_log) של האתר שלך..
אם אתה מריץ על יוניקס/לינוקס אז תוכל להשתמש בפקודה tail כדי להדפיס את השגיאות האחרונות. |
|
שליחת דואר מתוך PHP המותקן על Win2k | 03-12-03 01:00 ארז ניניו | #739 |
| האם ניתן לשלוח דואר גם ע"י PHP המותקן על IIS?
ואם כן אז איך מגדירים את שרת הדואר היוצא. |
|
הגדרת שרת דואר על ווינדוס | 03-12-03 02:02 אלי חן (מנהל) | #742 |
| שנה בקובץ ה-ini של PHP את הכניסה SMTP להיות שם השרת באמצעותו PHP שולחת את האי-מייל.
אם שרת ה-SMTP (שרת אי-מייל בווינדוס) נמצא על השרת המקומי, אז כתוב:
SMTP = localhost
כדי ש-PHP תצליח לשלוח את האי-מייל, חייב כי על השרת ירוץ שרת SMTP. |
|
אימייל בפורמט HTML | 10-12-03 01:00 אוריין | #1157 |
| שלום אלי!
תודה על כל המידע המצויין שאתה מספק פה!
אני קצת חדש בשטח ועוד לא ממש יודע איך לחפש את הדברים שאני צריך.
אני משתמש בטופס שונה מהטופס שבמדריך. כשהוא נשלח, הוא מגיע כטקסט בלבד.
איך אפשר לגרום למייל להשלח כ-HTML?
הרבה תודה!
אוריין. |
|
שליחת אי-מייל כ-HTML | 31-10-03 17:01 אלי חן (מנהל) | #1201 |
| הוסף ל-headers של האי-מייל Content-Type של תוכן HTML. כך לדוגמא:
$headers.="Content-Type: text/html; charset=windows-1255"; |
|
אני לא מקבל את שדה headers | 02-11-03 10:01 דור | #1313 |
| תודה רבה, זה עובד נהדר.
בעייה אחת: אני מקבל את גוף ההודעה בלבד, ללא שדות שם השולח ואימייל השולח. אשמח אם תוכל לומר לי מה לא בסדר.
תודה. |
|
נמען אוטומטי? | 02-11-03 11:01 רז אוזן | #1316 |
| היי, רציתי לדעת אם אני יכול לעשות שנמען יהיה כתובת אימייל שאני מגדיר מראש?
אין לי ידע ממש נרחב ב- PHP אז בבקשה לא לסבך.
תודה, רז. |
|
בעיה עם עברית | 01-11-05 07:01 רונן גוטנמכר | #2634 |
| למדתי מהדוגמא כאן והיא מאד הישכילה אותי
למרות זאת נתקלתי בבעיה עם עברית הטופס שלי באמת נשלח אבל שם השולח והנושא עברו למאיל משובשים
למרות שהגדרתי בheaders
charset utf-8 |
|
לא מצליח לי | 04-12-06 06:00 הילה אי | #2670 |
| היי
אני מנסה להפעיל את הסקריפט הזה ללא הצלחה
אין לי שום ידע ב-PHP ואני חייבת את הסקריפט בשפה זו כי השרת תומך בה.
מישהוא יכול לעזור לי בבקשה? |
|
איך שולחים ל2 מכותבים | 06-12-07 22:01 מאיר גברי | #2773 |
| שלום אני מעוניין לשלוח את המאייל ל2 מכותבים
איך עושים?
תודה |
|
העלאה לשרת | 09-12-07 18:00 אייל ברודובסקי | #2786 |
| שלום מישהו יכול להסביר לי בדיוק איך אני מעלה את הקבצים לשרת , בכל צורה שהיא הם לא עובדים אצלי.
זה מייל אני אשמח לקבל עזרה eyalbr101@yahoo.com
תודה |
|
איך שולחים לשני מכותבים | 01-12-11 01:01 מירב שטאובר | #2891 |
| בכדי לשלוח לשני מכותבים או יותר:
כותבים כתובת אימייל אחת
כותבים פסיק ,
ואז עוד אחת וכך הלאה... |
|
בעיות עם עברית | 01-12-11 01:01 מירב שטאובר | #2892 |
| יש הרבה בעיות עם עברית. בכדי שהסקריפט ישלח הודעות בעברית צריך לדאוג לשני דברים עיקריים:
1. שהקובץ PHP המכיל את הסקריפט ישמר בפורמט UTF8 . ניתן להבטיח זאת ע"י שימוש למשל בתוכנת Notepad++ ולבחור להמיר את הקובץ לפורמט המבוקש (ראה תפריט encoding). ורק אז להכניס את הטקסטים בעברית ולשמור אותם בתוכנה הנ"ל. כעת אכן הקובץ ישמר עם תוכנו בעברית ולא בגיברייש.
2. בכדי שההודעה שנשלחת בסקריפט אכן תגיעה בעברית למען הרצוי, הוסף ל-headers של האי-מייל Content-Type מתאים:
$headers.="Content-Type: text/plain; charset=utf-8";
גם text/html יהיה רלוונטי , מן הסתם, תלוי בתוכן ההודעה : אם היא מכילה רק טקסט אז הדוגמה הראשונה תתאים. ואם ההודעה מכילה תגיות HTML אז הסוג יהיה
text/html |
|
איך ששולחים ליותר ממכותב אחד | 01-12-11 02:01 מירב שטאובר | #2893 |
| בכדי לשלוח לשני מכותבים או יותר:
כותבים כתובת אימייל אחת
כותבים נקודה פסיק ;
ואז עוד כתובת מייל וכך הלאה... |
|
|
|
|
|
ניווט האתר:
עיבוד הטופס ושליחת האי-מייל |
הוספה למועדפים:
|