מדריך PHP

מדריך PHP: מייל ו-PHP

‏ • Internet Israel

כיוון שאנו עובדים עם שרת מקומי (WebMatrix), אנו צריכים לשנות את הגדרות ה-php.ini כדי שהמייל יעבוד. אנו נקנפג את ה-php.ini כדי שישלח מייל באמצעות ה-SMTP של הספק שלנו. אם אתם לא רוצים לעבור את התהליך, זה בסדר גמור לבדוק את הסקריפט באמצעות שרת ההוסטינג שלכם (באחד המאמרים הקודמים למדנו איך להעלות קבצים ישירות מה-webmatrix). כל ספק הוסטינג מחוייב לגרום לפונקצית ה-mail ב-PHP לעבוד וסביר מאד להניח שהפונקציה הזו עובדת אצלו.

על מנת לאפשר לפונקצית mail לעבוד, עלינו לוודא שההגדרות האלו קיימות ב-php.ini:

[mail function]

SMTP = smtp.012.net.il

smtp_port = 25

username = myusername

password = mypassword

כאשר כאן השתמשתי ב-SMTP של 012 סמייל, אבל אם יש לכם ספק אחר אתם חייבים להשתמש ב-SMTP שלו וכמובן בשם המשתמש והסיסמה שלכם.

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

על מנת לשלוח מייל בסיסי ביותר לשם בדיקה, אנו משתמשים בפונקצית mail, היא פונקציה פשוטה ביותר:

<?php
    mail("[email protected]" ,  "BODY" , "SUBJECT" );

כאשר במקום המייל שלי ניתן לשים כל מייל שהוא וב-BODY שמים את גוף ההודעה וב-SUBJECT שמים את הנושא.

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

<?php

$to      = '[email protected]';
$subject = 'SUBJECT';
$message = 'BODY';
$headers = 'From: [email protected]' . "rn" .
    'Reply-To: [email protected]' . "rn" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

כאשר ה-headers כמובן משתנים בהתאם למה שרוצים.

אם אתם צריכים לשלוח מייל HTML, אתם יכולים להשתמש בפונקציה הזו:

 

<?php
function sendHTMLemail($to, $subject, $from, $body) { 

    if (ereg("(.*)< (.*)>", $from, $regs)) {
        $from = '=?UTF-8?B?'.base64_encode($regs[1]).'?= < '.$regs[2].'>';
    } else {
        $from = $from;
    }

    $headers = "From: $fromrn";
    $headers .= "MIME-Version: 1.0rn";
    $boundary = uniqid("HTMLEMAIL");
    $headers .= "Content-Type: multipart/alternative;".
        "boundary = $boundaryrnrn";
    $headers .= "This is a MIME encoded message.rnrn";
    $headers .= "--$boundaryrn".
        "Content-Type: text/plain; UTF-8rn".
        "Content-Transfer-Encoding: base64rnrn";
    $headers .= chunk_split(base64_encode(strip_tags($body)));
    $headers .= "--$boundaryrn".
        "Content-Type: text/html; charset=UTF-8rn".
        "Content-Transfer-Encoding: base64rnrn";
    $headers .= chunk_split(base64_encode($body)); 

    $result = mail($to,'=?UTF-8?B?'.base64_encode($subject).'?=',"",$headers);
    return $result;
}

עד כאן בנוגע למייל – פשוט ביותר!

תגיות: , ,

רן בר-זיק

מתכנת PHP מנוסה ובעל ידע רב בפיתוח לאינטרנט על בסיס LAMP. מומחה במערכות דרופל, ג'ומלה ו-וורדפרס. שולט היטב בכל מה שקשור לפרונט אנד: JavaScript: jQuery ו-MooTools,ActionScript 2/3 וכמובן HTML 5 + CSS 3.אינטרנט ישראל: www.internet-israel.com

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