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