0

我在 PHPmailer 中有以下代码:

$tomailn[0] = 'imap2@gazler.com';
$tomailn[1] = 'imap@gazler.com';
foreach($tomailn as $value)
{
$mail->AddAddress($value, '');
}

但我收到错误“无法实例化邮件功能”。

如果我从数组中删除一个项目,它可以正常工作,但在尝试添加 2 个或更多地址时会出错。任何想法为什么会发生这种情况?添加多个电子邮件地址是否有不同的方法?

干杯,加兹勒。

4

6 回答 6

4

深入研究源代码。编辑 PHPMailer.php 并找到“ function MailSend”。(在 5.0.2 中,它在第 564 行附近。)

在所述函数中,从每次调用中删除@ 错误抑制器mail()。确保error_reporting设置为对调试合理的值。开发时,选择这样的东西:

错误报告(E_ALL | E_STRICT);
ini_set('log_errors', '开');
ini_set('display_errors', '开');

查看 PHP 是否显示任何错误。PHPMailer 仅在最后一次调用mail()返回错误信息或$rt从未设置时抛出实例化异常,这意味着if ($this->Sender != '' && strlen(ini_get('safe_mode'))< 1)计算结果为true.

你用的是安全模式吗?PHP Mailer$mailer->Senderini_get('safe_mode')说什么?(我的猜测:如果您没有在安全模式下运行,但将其设置为类似Off,则此代码将返回true。)

于 2010-02-20T22:09:32.773 回答
0

你试过了$mail->AddAddress($value);吗?

于 2010-02-17T01:50:09.247 回答
0

大多数情况下,当from标头未设置或无效时会导致此错误。尝试设置此变量:

$mail->From = 'valid@mailaddress.com';

如果它仍然不起作用,请尝试以下方法之一:

  • 检查是否mail在服务器(和php.ini设置)中启用;
  • openssl模块已启用(执行 aphpinfo()并搜索 OpenSSL)
于 2010-02-19T02:07:45.830 回答
0

我刚刚浏览了PHPMailer的源代码,消息“无法实例化邮件函数”表示mail()返回false。

您可以尝试相同的功能,但使用您知道通常接受电子邮件的两个不同的电子邮件地址吗?

于 2010-02-20T22:06:46.597 回答
0

如果您不使用 PHPMailer,请尝试下载最新版本的 PHPMailer,它已修复错误。您的邮件程序类很可能被弄乱了。

于 2010-02-20T22:11:14.407 回答
0

'无法实例化邮件功能'。只需检查您的邮件功能是否正常工作。很多时候由于托管服务提供商的限制而导致此错误。很多时候托管服务提供商阻止您的邮件功能,然后通常您会收到此错误

于 2010-02-22T16:48:28.100 回答