您是专门尝试测试邮件的发送,还是测试其余的代码?
对于前者,您需要配置:
SMTP = smtp.example.com
smtp_port = 25
sendmail_from = me@example.com
Run Code Online (Sandbox Code Playgroud)
在您的 php.ini 文件中(使用 phpinfo() 检查它的位置),替换为适当的值。
要测试发送邮件过程以外的代码,那么我建议创建 2 个包含文件:
<?php
// for live usage/mail send testing
function ori_mail()
{
return call_user_func_array('mail',func_get_args());
}
Run Code Online (Sandbox Code Playgroud)
和测试其他代码
function ori_mail()
{
file_put_contents('debug_mail_scripts.txt'
,date('r') . ':' . var_export(func_get_args(), true)
, FILE_APPEND);
}
Run Code Online (Sandbox Code Playgroud)
并将相关的一项纳入您的测试。
请注意,测试与 SMTP 服务器的集成以及测试代码的可交付性相当复杂,但应该独立于测试 PHP 完成。
C。
几个月前,我在本地计算机上开发一个涉及发送自动电子邮件通知的应用程序时遇到了类似的问题。我在 OSX 上安装 Sendmail 花费了相当长的时间,最终我无法让它正常工作。
我的方法是使用 PEAR Mail作为 php 原生邮件功能的临时替代品。基本上,您可以定义一个名为send-mail 的函数(请参阅下面的代码),并且一旦您将应用程序部署到服务器上,您就可以用对 mail() 的调用替换对该函数的调用。
<?php
require_once 'Mail.php';
function send_mail($recipient,$subject,$body){
$host = "yourmailserver.net";
$username = "you@yourmailserver.net";
$password = "password";
$port = 25;
$headers = array ('From' => "Your agent <noreply@yoursite.net>",
'To' => $recipient,
'Subject' => $subject
);
$smtp = Mail::factory(
'smtp',
array ('host' => $host,
'auth' => true,
'port' => $port,
'username' => $username,
'password' => $password)
);
$smtp->send($recipient, $headers, $body);
}
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25070 次 |
最近记录: |