无法使用PHP中的REST API构建发送电子邮件?

时间:2011-11-12 13:40:28

标签: php slim

我在php中设计REST API。我正在使用slim框架来设计API。我想发送一个页面来发送电子邮件。这是我发送电子邮件的代码:

$app->get('/sendemail', function () {



 require_once "Mail.php";
 $from = "Sender <sender@domain.com>";
 $to = "Recipient <recipient@anotherDomain.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHey Recipient, you done it...";
 $host = "my host";
 $username = "myuserid";
 $password = "password";
 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));

 $mail = $smtp->send($to, $headers, $body);

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>
});

如果我将此检查到我的单独文件中,我的发送电子邮件的代码正在运行。但是这段代码在API中不起作用。

这是产生的错误: -

enter image description here

请建议我该怎么做?

3 个答案:

答案 0 :(得分:1)

Slim以面向对象的方式处理PHP错误。它使用PHP标准类ErrorException将所有错误转换为异常。

错误有错误级别,例如E_NOTICEE_WARNING。例外没有。你或者要么有例外。

您正在使用的PEAR邮件程序版本正在提出一个小的弃用通知。通常它会被隐藏,你不会知道它,但由于它被转换为异常,Slim会向你显示错误。这是件好事;你的代码不应该有通知。

要解决此问题,您可以尝试更新邮件程序类,以避免弃用功能,或者您可以自行暂时发现错误:

function ignoringHandler($level, $str, $file='', $line='', $context=array())
{
    // Tell PHP that we have "processed" the error
    return true;
}

// Change the handler to ours for notices
$slimHandler = set_error_handler('ignoringHandler', E_NOTICE | E_DEPRECATED);

// Your code accessing older library

restore_error_handler();

答案 1 :(得分:0)

为什么这两行反向?

$app->get('/sendemail', function () {

<?php

不应该是:

<?php

$app->get('/sendemail', function () {

答案 2 :(得分:0)

嘿,我已经非常有效地发送电子邮件。

我使用php邮件。

你应该使用这个链接。

http://moneyandjobs.blogspot.com/2008/06/phpmailer-settings-to-send-email-using.html?showComment=1321171320586

感谢所有试图帮助我的人。