메뉴 건너뛰기

이메일 발송이 안될 때 설정해줘야 하는 것

1. xe-root/config/mail.php

<?php


return [ ..............

    'driver' => env('MAIL_DRIVER', 'smtp'),

 ..............


    'host' => env('MAIL_HOST', 'smtp.gmail.com'),

 ..............

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '~~~@gmail.com'),
        'name' => env('MAIL_FROM_NAME', '~~~'),
    ],

 ..............


    'username' => env('MAIL_USERNAME', '~~~@gmail.com'),

    'password' => env('MAIL_PASSWORD', '~~~'),


 ..............

 

현재 latest.zip 받아서 설치하거나 CLI Installer로 설치하면 설정하는 인터페이스가 따로 없기 때문에...

 

2. xe-root/app/Http/Controllers/Auth/AuthController.php

<?php
    /**
     * 이메일 인증 대기 상태인 회원이 로그인 했을 떄 처리
     *
     * @param Request $request request
     *
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Xpressengine\Presenter\Presentable
     */
    public function pendingEmail(Request $request)
    {
        $user = $this->auth->user();
        if ($user->getStatus() === User::STATUS_ACTIVATED) {
            return redirect('/');
        }

        $this->auth->logout();
        //$request->session()->invalidate();

        return XePresenter::make('pending_email', compact('user'));
    }

 

"function pendingEmail(Request"으로 검색,
$request->session()->invalidate(); 를 주석처리.

 

3. xe-root/app/Http/Controllers/Auth/RegisterController.php

<?php
    /**
     * 링크를 통해서 회원가입 시 사용하는 인증 메일 발송
     *
     * @param Request $request request
     *
     * @return \Illuminate\Http\RedirectResponse
     */
    public function getSendApproveEmail(Request $request)
    {
        $address = $request->get('email');
        $email = $this->handler->pendingEmails()->findByAddress($address);

        $user = $email->user;
        $this->handler->deleteEmail($email);

        $this->sendApproveEmail($user);
        $request->session()->invalidate();

        return redirect('/')->with('alert', ['type' => 'success', 'message' => xe_trans('xe::msgEmailSendComplete')]);
    }

 

"function getSendApproveEmail(Request"로 검색,
$this->sendApproveEmail($user); 바로 아랫줄에 $request->session()->invalidate(); 추가.

 

이렇게 하면 현재 최신 버젼으로 이메일을 발송할 수 있으며, 또, 세션이 만료됬다는 오류 페이지 대신에 이메일을 정상적으로 보냈다는 메시지를 볼 수 있습니다.

관리자 페이지에서도 두가지 항목, 발송자 이름, 발송자 이메일 주소를 설정해주셔야 하고요.

  • share