簡體   English   中英

無法使用php中構建的REST API發送電子郵件?

[英]Unable to send email using REST API build in php?

我正在用php設計REST API。 我正在使用苗條的框架來設計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中不起作用。

這是正在生成的錯誤:-

在此處輸入圖片說明

請建議我該怎么辦?

Slim以面向對象的方式處理PHP錯誤。 它使用PHP標准類ErrorException將所有錯誤轉換為異常。

錯誤具有錯誤級別,例如E_NOTICEE_WARNING 例外沒有。 您要么有例外,要么沒有。

您使用的PEAR郵件程序的版本引起了次要棄用通知。 通常,它會被隱藏,並且您不會知道,但是由於它已轉換為異常,因此Slim向您顯示錯誤。 這是一件好事。 您的代碼中沒有通知。

為了解決這個問題,您可以嘗試更新您的mailer類,以避免使用過時的功能,或者您可以暫時自己捕獲錯誤:

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();

為什么這兩行相反?

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

<?php

不應該是:

<?php

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

嘿,我非常有效地發送了電子郵件。

我為此使用php mailer。

您應該使用此鏈接。

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

謝謝所有試圖幫助我的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM