这是indexloc提供的服务,不要输入任何密码
Skip to content

PHP mail() function triggers 'missing recipient' message #3

@geerlingguy

Description

@geerlingguy

I kept digging deeper and deeper (I really want to use mhsendmail instead of sSMTP for my Drupal dev environments!), and found that PHP's mail() function is the culprit here, in terms of how it uses sendmail...

To reproduce, install PHP on a server, set the sendmail_path ini directive to the path to the mhsendmail binary, then create a script somewhere with the following test:

<?php
$to = 'nobody@example.com';
$subject = 'Test';
$message = 'Test message.';
$headers = 'From: webmaster@example.com' . "\r\n" .
  'Reply-To: webmaster@example.com' . "\r\n" .
  'X-Mailer: PHP/' . phpversion();
$result = mail($to, $subject, $message, $headers);
var_dump($result);
?>

If you run the script by accessing it through a webserver, check the webserver's error logs; you should get a message missing recipient, from mhsendmail.

The problem is that it seems mhsendmail is expecting the recipient as one of the command line args, but PHP's mail() function passes the recipient as a line in the header ('To: [recipient]'). See php-src: https://github.com/php/php-src/blob/fc33f52d8c25997dd0711de3e07d0dc260a18c11/ext/standard/mail.c#L356-L361

I think if you can make it so mhsendmail accepts the To address as the first line of stdin, it might work...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions