如何使用 Google OAuth(通过 SMTP)发送电子邮件?

发布于 2024-12-11 06:38:05 字数 1670 浏览 0 评论 0原文

已阅读这个和使用此处中的示例。

但是,我在使用 OAuth 作为经过验证的 Google 用户发送电子邮件时仍然遇到困难。我还有有效的 OAuth 令牌、机密和 xoauth 令牌。

我发送电子邮件的代码:

$authenticateParams = array('XOAUTH', $initClientRequestEncoded); 

$smtp = new Zend_Mail_Protocol_Smtp('smtp.gmail.com', 587, array(
"AUTH" => $authenticateParams, 'ssl' => 'tls')); 

try {
   // Create a new mail object
   $mail = new Zend_Mail();

   $mail->setFrom("[email protected]");
   $mail->addTo("[email protected]");
   $mail->setSubject("Your account has been created");

   $email = "Thank you for registering!";

   $mail->setBodyText($email);
   $mail->send();

} catch (Exception $e) {
   echo "error sending email . <BR>" . $e;
}

但这似乎发送匿名电子邮件,而不是用户经过身份验证。如果我这样做:

$smtp = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array('AUTHENTICATE' => $authenticateParams, 'ssl' => 'tls')); 
Zend_Mail::setDefaultTransport($smtp);

我得到:异常“Zend_Mail_Protocol_Exception”,消息“5.5.1 需要身份验证”。

我确信这只是正确获取邮件传输 smtp 参数的情况,但发送 SMTP 电子邮件的文档不存在,而且我找不到任何相关代码示例。

Have read this and this and using example from here.

However, I am still having difficulty in sending emails as a verified Google user using OAuth. I have the valid OAuth tokens, secrets, and xoauth token as well.

My code to send the email:

$authenticateParams = array('XOAUTH', $initClientRequestEncoded); 

$smtp = new Zend_Mail_Protocol_Smtp('smtp.gmail.com', 587, array(
"AUTH" => $authenticateParams, 'ssl' => 'tls')); 

try {
   // Create a new mail object
   $mail = new Zend_Mail();

   $mail->setFrom("[email protected]");
   $mail->addTo("[email protected]");
   $mail->setSubject("Your account has been created");

   $email = "Thank you for registering!";

   $mail->setBodyText($email);
   $mail->send();

} catch (Exception $e) {
   echo "error sending email . <BR>" . $e;
}

But this seems to send an anonymous email and not as the user authenticated. If I do:

$smtp = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array('AUTHENTICATE' => $authenticateParams, 'ssl' => 'tls')); 
Zend_Mail::setDefaultTransport($smtp);

I get: exception 'Zend_Mail_Protocol_Exception' with message '5.5.1 Authentication Required.

I'm sure it's just a case of getting the mail transport smtp params right, but the documentation for sending SMTP emails is non-existent and I can't find any code examples for this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在你怀里撒娇 2024-12-18 06:38:05

查看以下博客文章,它们将告诉您哪里出了问题。

Google smtp oauth2 身份验证

使用 gmail 发送邮件smtp 和 xoauth

Check out the following blog posts which will show you where you went wrong.

google smtp oauth2 authentication

send mail with gmail smtp and xoauth

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文