既然谷歌已经禁用了“不太安全的应用程序”设置,如何使用 codeigniter 的 gmail 帐户设置电子邮件?

How to set up email with a gmail account from codeigniter now that Google has disabled "less secure app" setting?

提问人:openSourcerer 提问时间:6/6/2022 更新时间:8/15/2022 访问量:1214

问:

我看到的有关从 gmail 帐户发送电子邮件的所有文档都指定检查您的 Google 帐户中的“允许安全性较低的应用程序访问”设置。显然,截至上周,谷歌已经禁用了该设置,至少对于具有两步身份验证的帐户(这对我来说是必需的,因为我使用自定义域作为 gmail 地址的别名)。我看到的解决方法是从谷歌创建一个一次性的“应用密码”并将其设置为“mail_password”。我正在尝试切换 ssl/tls,以及使用 @gmail.com 地址名称而不是别名,但没有成功获得确认电子邮件以在预订托管安装后发送的简单约会。

我没有看到控制台中显示错误,是否有一个地方我应该能够看到错误/它的问题到底是什么? 我需要“useragent”吗?我是否遗漏了任何必要的变量?谢谢

application/config/email.php

<?php defined('BASEPATH') or exit('No direct script access allowed');

// $config['useragent'] = 'Easy!Appointments';
$config['protocol'] = 'smtp'; // or 'smtp'
$config['smtp_port'] = 587;
$config['mailtype'] = 'html'; // or 'text'
// $config['smtp_debug'] = '0'; // or '1'
// $config['smtp_auth'] = TRUE; //or FALSE for anonymous relay.
$config['smtp_host'] = 'smtp.gmail.com';
$config['mail_password']='<gmail one time app password>';
$config['smtp_user'] = '[email protected]'; //set up as an alias of a gmail account
$config['smtp_pass'] = '<gmail password>';
$config['smpt_timeout'] = 60;
$config['smtp_crypto'] = 'ssl'; // or 'tls'
php codeigniter 电子邮件 gmail softaculous

评论

0赞 imilah 6/13/2022
mail_password永远不会是 Email 类上的 codeigniter 参数之一。只需使用您的应用密码作为smtp_pass即可。

答:

0赞 Pavan Kumar 6/8/2022 #1

我能够找到错误消息,以防电子邮件发送失败的情况。

if($this->email->send()){
echo json_encode($data);
}else{
$data['status'] = $this->email->print_debugger(); //failed case
echo json_encode($data);
}

另外,当我从谷歌控制台复制应用程序密码时,它在每个字符之间添加了空格,这导致了失败。我已经删除了空格,效果很好。希望这会有所帮助。

评论

0赞 openSourcerer 6/11/2022
您将应用程序密码复制到哪里?我意识到“mail_password”实际上不是一个代码点火器参数
0赞 imilah 6/13/2022
我已经尝试过这个应用程序密码。只需将smtp_pass更改为应用密码,然后再次尝试发送电子邮件即可。
1赞 Hana Hasanah 8/15/2022 #2

22 年 5 月 30 日起,Google 禁用了“允许安全性较低的应用程序”,我使用了另一种方式,如下所示:

  • 启用 2FA(我使用了 Google Authenticator 的手机号码和代码)
  • 创建应用密码(如果您不知道如何创建,可以查看下面的链接)
  • 在 GMail 设置中启用 IMAP(不要跳过这一步,因为没有它我仍然无法发送电子邮件)

最后,在 Codeigniter 的配置邮件代码的 smtp_pass 参数中使用应用密码。

我之前参考了 https://help.warmupinbox.com/en/articles/4934806-configure-for-google-workplace-with-two-factor-authentication-2fa