1--TEST--
2Test mail() function : basic functionality
3--EXTENSIONS--
4imap
5--CONFLICTS--
6imap
7--SKIPIF--
8<?php
9if( substr(PHP_OS, 0, 3) != 'WIN' ) {
10   die('skip...Windows only test');
11}
12
13require_once(__DIR__.'/mail_skipif.inc');
14?>
15--INI--
16max_execution_time = 120
17--FILE--
18<?php
19echo "*** Testing mail() : basic functionality ***\n";
20require_once(__DIR__.'/mail_include.inc');
21$subject_prefix = "!**PHPT**!";
22
23$to = "$username";
24$subject = "$subject_prefix: Basic PHPT test for mail() function";
25$message = <<<HERE
26Description
27bool mail ( string \$to , string \$subject , string \$message [, string \$additional_headers [, string \$additional_parameters]] )
28Send an email message
29HERE;
30
31$extra_headers = "FRom: user@example.com";
32
33$res = mail($to, $subject, $message, $extra_headers);
34
35if ($res !== true) {
36    exit("TEST FAILED : Unable to send test email\n");
37} else {
38    echo "Msg sent OK\n";
39}
40
41// Search for email message on the mail server using imap.
42$imap_stream = imap_open($default_mailbox, $username, $password);
43if ($imap_stream === false) {
44    echo "Cannot connect to IMAP server $server: " . imap_last_error() . "\n";
45    return false;
46}
47
48$found = false;
49$repeat_count = 20; // we will repeat a max of 20 times
50while (!$found && $repeat_count > 0) {
51
52    // sleep for a while to allow msg to be delivered
53    sleep(1);
54
55    $current_msg_count = imap_check($imap_stream)->Nmsgs;
56
57    // Iterate over recent msgs to find the one we sent above
58    for ($i = 1; $i <= $current_msg_count; $i++) {
59        // get hdr details
60        $hdr = imap_headerinfo($imap_stream, $i);
61
62        if (substr($hdr->Subject, 0 , strlen($subject_prefix)) == $subject_prefix) {
63            echo "Id of msg just sent is $i\n";
64            echo ".. delete it\n";
65            imap_delete($imap_stream, $i);
66            $found = true;
67            break;
68        }
69    }
70
71    $repeat_count -= 1;
72}
73
74if (!$found) {
75    echo "TEST FAILED: email not delivered\n";
76} else {
77    echo "TEST PASSED: Msgs sent and deleted OK\n";
78}
79
80imap_close($imap_stream, CL_EXPUNGE);
81?>
82--EXPECTF--
83*** Testing mail() : basic functionality ***
84Msg sent OK
85Id of msg just sent is %d
86.. delete it
87TEST PASSED: Msgs sent and deleted OK
88