简体   繁体   中英

ics php code error. Tried to input this into phprunner

I'm trying to run the following code that generates ICS. Pluck it off the net and when I run it via WAMP, it prompts an error that create a mail log as follows:

mail() on [C:\wamp\www\ical.php:79]:
To: spencer@spencer.com --
Headers: From: My Name <spencer@spencer.com>
Reply-To: My Name <spencer@spencer.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----Meeting Booking----caf27bb576bd8abd889197ec8c0ebaf5"
Content-class: urn:content-classes:calendarmessage

It says error is on line 79 which is: $mail_sent = @MAIL( $email, $subject, $message, $headers );

Really puzzled on this. Any help???

    test.php    
<?PHP
    INCLUDE ("ical.php");
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>iCal Test</title>
    </head>

    <body>
    <?PHP


    //$firstname is the first name of target
    //$lastname is the last name of target
    //$email is the targets email address
    //$meeting_date is straight from a DATETIME mysql field and assumes UTC.
    //$meeting_name is the name of your meeting
    //$meeting_duration is the duration of your meeting in seconds (3600 = 1 hour)
    $firstname = "John";
    $lastname = "Smith";
    $email = "spencer.lim@apceemanpower.com";
    $meeting_date = "2010-07-06 13:40:00"; //mysql format
    $meeting_name = "Hello";
    $meeting_duration = 3600;

    //returns true or false
    $result = sendIcalEmail($firstname,$lastname,$email,$meeting_date,$meeting_name,$meeting_duration);

    //display result
    IF($result) {
        ECHO "Email sent successfully.";
    } ELSE {
        ECHO " $result ";// "A problem occurred sending email";
    }   


    ?>
    </body>
    </html>

ical.php

    <?PHP

    //$firstname is the first name of target
    //$lastname is the last name of target
    //$email is the targets email address
    //$meeting_date is straight from a DATETIME mysql field and assumes UTC.
    //$meeting_name is the name of your meeting
    //$meeting_duretion is the duration of your meeting in seconds (3600 = 1 hour)

    FUNCTION sendIcalEmail($firstname,$lastname,$email,$meeting_date,$meeting_name,$meeting_duration) {

        $from_name = "My Name";
        $from_address = "spencer.lim@apceemanpower.com";
        $subject = "Meeting Booking"; //Doubles as email subject and meeting subject in calendar
        $meeting_description = "Here is a brief description of my meeting\n\n";
        $meeting_location = "My Office"; //Where will your meeting take place


        //Convert MYSQL datetime and construct iCal start, end and issue dates
        $meetingstamp = STRTOTIME($meeting_date . " UTC");    
        $dtstart= GMDATE("Ymd\THis\Z",$meetingstamp);
        $dtend= GMDATE("Ymd\THis\Z",$meetingstamp+$meeting_duration);
        $todaystamp = GMDATE("Ymd\THis\Z");

        //Create unique identifier
        $cal_uid = DATE('Ymd').'T'.DATE('His')."-".RAND()."@mydomain.com";

        //Create Mime Boundry
        $mime_boundary = "----Meeting Booking----".MD5(TIME());

        //Create Email Headers
        $headers = "From: ".$from_name." <".$from_address.">\n";
        $headers .= "Reply-To: ".$from_name." <".$from_address.">\n";

        $headers .= "MIME-Version: 1.0\n";
        $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n";
        $headers .= "Content-class: urn:content-classes:calendarmessage\n";

        //Create Email Body (HTML)
        $message = "";
        $message .= "--$mime_boundary\n";
        $message .= "Content-Type: text/html; charset=UTF-8\n";
        $message .= "Content-Transfer-Encoding: 8bit\n\n";

        $message .= "<html>\n";
        $message .= "<body>\n";
        $message .= '<p>Dear '.$firstname.' '.$lastname.',</p>';
        $message .= '<p>Here is my HTML Email / Used for Meeting Description</p>';    
        $message .= "</body>\n";
        $message .= "</html>\n";
        $message .= "--$mime_boundary\n";

        //Create ICAL Content (Google rfc 2445 for details and examples of usage) 
        $ical =    'BEGIN:VCALENDAR
    PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
    VERSION:2.0
    METHOD:PUBLISH
    BEGIN:VEVENT
    ORGANIZER:MAILTO:'.$from_address.'
    DTSTART:'.$dtstart.'
    DTEND:'.$dtend.'
    LOCATION:'.$meeting_location.'
    TRANSP:OPAQUE
    SEQUENCE:0
    UID:'.$cal_uid.'
    DTSTAMP:'.$todaystamp.'
    DESCRIPTION:'.$meeting_description.'
    SUMMARY:'.$subject.'
    PRIORITY:5
    CLASS:PUBLIC
    END:VEVENT
    END:VCALENDAR';   

        $message .= 'Content-Type: text/calendar;name="meeting.ics";method=REQUEST\n';
        $message .= "Content-Transfer-Encoding: 8bit\n\n";
        $message .= $ical;            

        //SEND MAIL
        $mail_sent = @MAIL( $email, $subject, $message, $headers );

        IF($mail_sent)     {
            RETURN TRUE;
        } ELSE {
            RETURN FALSE;
        }   

    }


    ?>

Just use

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

@mail replace it with mail

Because mail function is accessed with mail() is not with @mail()

Note:Because @mail function will suppresses all warnings/errors , which mail() function may throw.

Reference PHP mail

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM