【问题标题】:Argument 2 passed to Google_Service_Gmail_UsersMessages_Resource::send() must be an instance of Google_Service_Gmail_Message, string given传递给 Google_Service_Gmail_UsersMessages_Resource::send() 的参数 2 必须是 Google_Service_Gmail_Message 的实例,给定字符串
【发布时间】:2016-01-17 17:32:32
【问题描述】:

我正在使用 Laravel 开发 Gmail API

我收到了错误:

参数 2 传递给 Google_Service_Gmail_UsersMessages_Resource::send() 必须是 Google_Service_Gmail_Message 实例,给定字符串

Google_Service_Gmail_Message 的实例是什么?我要给string,我应该给什么?

我的代码是

public function sendMessage($message) {
try {
$client = $this->getClient();
$service = new Google_Service_Gmail($client);
$userId = 'me';
$message = "test";
$message = $service->users_messages->send($userId, $message);
print 'Message with ID: ' . $message->getId() . ' sent.';
return $message;
} catch (Exception $e) {
 print 'An error occurred: ' . $e->getMessage();
}
}

带有两个参数的send 方法位于line 7

【问题讨论】:

  • 方法send()Google_Service_Gmail_UsersMessages_Resource 类的成员,在调用时需要两个参数(或参数),其中一个(第二个)是Google_Service_Gmail_Message 类的实例。而不是它,你正在传递一个字符串。这是我仅阅读您的错误消息所能说的最多的内容。如果您需要更多帮助,您需要分享产生此问题的代码。
  • @Alan Machado,我正在处理的代码
  • 好了,就在这里:$message = $service->users_messages->send($userId, $message);,var 消息是一个包含“test”的字符串,而它应该是Google_Service_Gmail_Message 的一个实例。您必须阅读 API 文档以了解如何创建要发送的新消息(以 $message = new Google_Service_Gmail_Message(); 开头)

标签: php laravel gmail-api


【解决方案1】:

//用PHPMailer准备邮件
$mail = 新 PHPMailer();
$mail->CharSet = "UTF-8";
$mail->编码 = "base64";

//提供您的标题信息、正文等...
$mail->Subject = "你收到了邮件!";
...

//创建 MIME 消息
$mail->preSend();
$mime = $mail->getSentMIMEMessage();
$mime = rtrim(strtr(base64_encode($mime), '+/', '-_'), '=');

//创建 Gmail 邮件

$message = new Google_Service_Gmail_Message();

$message->setRaw($mime);
$message = $service->users_messages->send('me',$message);

【讨论】:

  • 我曾经手动创建 mime 消息,但看起来您的回答将帮助我更新我的应用程序,以便有效地创建 mime 消息。干杯!
猜你喜欢
  • 2016-08-10
  • 2017-06-12
  • 1970-01-01
  • 2014-04-18
  • 2019-06-04
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
相关资源
最近更新 更多