带有g套件和XOAUTH2的Laravel邮件 [英] Laravel mail with g suites and XOAUTH2

查看:54
本文介绍了带有g套件和XOAUTH2的Laravel邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个g套件帐户和与我的电子邮件相关的应用程序.我当时在查看Laravel邮件功能,但看不到使用xoauth身份验证类型登录gmail smtp的任何选项.

I have a g suites account and applications associated with my e-mails. I was looking at the Laravel mail functions but I do not see any option to log in to gmail smtp with xoauth auth type.

我将PHPMailer与codeigniter一起使用,并且必须使用clientId,clientSecret和refreshToken通过smtp.gmail.com发送电子邮件

I was using PHPMailer with codeigniter and I had to use clientId, clientSecret and refreshToken to send emails via smtp.gmail.com

我是否可以使用带有本地laravel swiftmailer的xoauth进行身份验证?

Is there any chance I can authenticate using xoauth with native laravel swiftmailer?

推荐答案

由于Laravel没有可用的配置来设置AuthMode,因此我们需要对其进行一些调整.

Since Laravel doesn't have available configuration to set AuthMode then we need to tweak it a little bit.

  1. config/app.php 中注册新的邮件服务提供商:

  1. Register a new Mail service provider in config/app.php:

// ...
'providers' => [
    // ...

    // Illuminate\Mail\MailServiceProvider::class,
    App\MyMailer\MyMailServiceProvider::class,

    // ...

  • app/MyMailer/MyMailServiceProvider.php 应该创建您自己的 TransportManager 类:

  • app/MyMailer/MyMailServiceProvider.php should create your own TransportManager class:

    ```

    namespace App\MyMailer;
    
    class MyMailServiceProvider extends \Illuminate\Mail\MailServiceProvider
    {
        public function registerSwiftTransport()
        {
            $this->app['swift.transport'] = $this->app->share(function ($app) {
    
                return new MyTransportManager($app);
            });
        }
    }
    

    ```

    1. app/MyMailer/MyTransportManager.php 中,我们可以为 SwiftMailer 提供其他配置:
    1. In the app/MyMailer/MyTransportManager.php we can provide additional configuration to the SwiftMailer:

    ```

    <?php
    
    namespace App\MyMailer;
    
    
    class MyTransportManager extends \Illuminate\Mail\TransportManager
    {
        /**
         * Create an instance of the SMTP Swift Transport driver.
         *
         * @return \Swift_SmtpTransport
         */
        protected function createSmtpDriver()
        {
            $transport = parent::createSmtpDriver();
            $config = $this->app->make('config')->get('mail');
    
    
            if (isset($config['authmode'])) {
                $transport->setAuthMode($config['authmode']);
            }
    
            return $transport;
        }
    }
    

    ```

    1. 最后要做的是为访问令牌提供配置为 XOAUTH2 password authmode 邮件配置:
    1. Last thing to do is to provide mail configuration with authmode set to XOAUTH2 and password to your access token:

    ```

    <?php
    
    return array(
    
    /*
    |--------------------------------------------------------------------------
    | Mail Driver
    |--------------------------------------------------------------------------
    |
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the
    | sending of e-mail. You may specify which one you're using throughout
    | your application here. By default, Laravel is setup for SMTP mail.
    |
    | Supported: "smtp", "mail", "sendmail"
    |
    */
    
    'driver' => 'smtp',
    
    /*
    |--------------------------------------------------------------------------
    | SMTP Host Address
    |--------------------------------------------------------------------------
    |
    | Here you may provide the host address of the SMTP server used by your
    | applications. A default option is provided that is compatible with
    | the Postmark mail service, which will provide reliable delivery.
    |
    */
    
    'host' => 'smtp.gmail.com',
    
    /*
    |--------------------------------------------------------------------------
    | SMTP Host Port
    |--------------------------------------------------------------------------
    |
    | This is the SMTP port used by your application to delivery e-mails to
    | users of your application. Like the host we have set this value to
    | stay compatible with the Postmark e-mail application by default.
    |
    */
    
    'port' => 587,
    
    /*
    |--------------------------------------------------------------------------
    | Global "From" Address
    |--------------------------------------------------------------------------
    |
    | You may wish for all e-mails sent by your application to be sent from
    | the same address. Here, you may specify a name and address that is
    | used globally for all e-mails that are sent by your application.
    |
    */
    
    'from' => array('address' => 'user@gmail.com', 'name' => 'user'),
    
    /*
    |--------------------------------------------------------------------------
    | E-Mail Encryption Protocol
    |--------------------------------------------------------------------------
    |
    | Here you may specify the encryption protocol that should be used when
    | the application send e-mail messages. A sensible default using the
    | transport layer security protocol should provide great security.
    |
    */
    
    'encryption' => 'tls',
    
    /*
    |--------------------------------------------------------------------------
    | SMTP Server Username
    |--------------------------------------------------------------------------
    |
    | If your SMTP server requires a username for authentication, you should
    | set it here. This will get used to authenticate with your server on
    | connection. You may also set the "password" value below this one.
    |
    */
    
    'username' => 'user@gmail.com',
    
    /*
    |--------------------------------------------------------------------------
    | SMTP Server Password
    |--------------------------------------------------------------------------
    |
    | Here you may set the password required by your SMTP server to send out
    | messages from your application. This will be given to the server on
    | connection so that the application will be able to send messages.
    |
    */
    
    'password' => 'YOUR ACCESS TOKEN',
    
    /*
    |--------------------------------------------------------------------------
    | Sendmail System Path
    |--------------------------------------------------------------------------
    |
    | When using the "sendmail" driver to send e-mails, we will need to know
    | the path to where Sendmail lives on this server. A default path has
    | been provided here, which will work well on most of your systems.
    |
    */
    
    'sendmail' => '/usr/sbin/sendmail -bs',
    
    /*
    |--------------------------------------------------------------------------
    | Mail "Pretend"
    |--------------------------------------------------------------------------
    |
    | When this option is enabled, e-mail will not actually be sent over the
    | web and will instead be written to your application's logs files so
    | you may inspect the message. This is great for local development.
    |
    */
    
    'pretend' => false,
    
    'authmode' => 'XOAUTH2',
    
    );
    

    ```

    这篇关于带有g套件和XOAUTH2的Laravel邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆