我使用PHP代码使用SMTP主机进行邮件,如下所示:
ini_set('SMTP','myserver');
ini_set('smtp_port',25);
$to = $email;
$headers = "MIME-Version: 1.0" . "'r'n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "'r'n";
$headers .= "From: NO-REPLY<no-reply@mydomain.com>" . "'r'n";
$subject = "Confirmation For Request";
$message = '<html>
<body>
<p>Hi '.$firstname.' '.$lastname.'</p>
<p>
We recieved below details from you. Please use given Request/Ticket ID for future follow up:
</p>
<p>
Your Request/Ticket ID: <b>'.$ticketID.'</b>
</p>
<p>
Thanks,<br>
'.$team.' Team.
</p>
</body>
</html>';
mail( $to, $subject, $message, $headers );
现在,当我在Windows Localhost中执行代码时。 我正在成功接收邮件,而如果我在我的 Linux 设置上删除相同的代码,我不会收到任何邮件,尽管 mail() 函数在 linux 机器中也返回 true....
在查看 Windows localhost 和 Linux 服务器的 phpinfo 时,对于邮件参数,我发现了一个区别,
在Windows中,我发现sendmail_path=="No Value",而在linux服务器上,它说"usr/sbin/sendmail -t -i"
有人可以帮助我解决这个问题吗?
注意:在Windows中,它是一个WAMP设置,而Linux是一个专用服务器...
如果你正在寻找你的php.ini
有一个简短的描述
ini_set('SMTP','myserver');
ini_set('smtp_port',25);
这两个值仅适用于 Windows。因此,如果您想在 linux 上通过 SMTP 发送邮件,您必须安装后缀并构建中继。
https://www.linode.com/docs/email/postfix/postfix-smtp-debian7
或者真正更容易的是使用可以通过套接字或卷曲(如Swiftmailer)发送SMTP邮件的库。
http://swiftmailer.org/docs/sending.html
这要容易得多,而且它的工作。
我之前和在PHP中看过这个.ini有两个键sendmail_from
http://php.net/sendmail-from(对于Win32)和sendmail_path
http://php.net/sendmail-path(对于Unix)在wamp或类似的Linux设置上,这个键的默认值是me@localhost在实际的邮件服务器上时,它应该拒绝该电子邮件地址作为用户,因为它们在服务器上不存在。
尝试添加类似以下内容...
ini_set('sendmail_from','admin@example.co.uk')