質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

568閲覧

お問い合わせフォームを送信し、送信完了画面へ移る事はできるが Gmailから送信ができない

jiro-

総合スコア28

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/10/20 15:13

編集2019/10/21 13:41

前提・実現したいこと

お問い合わせフォーム作成中で、最後の送信完了しました。という言葉をブラウザに表示する所までいけたのですが、
Gmailからの送信がうまくできません。
Gmailはsmtpサーバーを使用
2段階認証プロセスはONにし
アプリパスワードも取得し.envにそのパスワードを使用しています
ご教示よろしくお願い致します。

該当のソースコード

.env

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=自分のユーザーネーム@gmail.com MAIL_PASSWORD=取得したアプリパスワード MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=自分のユーザーネーム@gmail.com MAIL_FROM_NAME=サイト名

config/mail.php

<?php return [ 'driver' => env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.gmail.com'), 'port' => env('MAIL_PORT', 587), 'from' => [ 'address' => env('MAIL_FROM_ADDRESS'), 'name' => env('MAIL_FROM_NAME'), ], 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'sendmail' => '/usr/sbin/sendmail -bs', 'markdown' => [ 'theme' => 'default', 'paths' => [ resource_path('views/vendor/mail'), ], ], 'log_channel' => env('MAIL_LOG_CHANNEL'), ];

app/Http/controllers/ContactController

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Mail\ContactSendmail; use App\Contact_us; use App\Contact; use Illuminate\Support\Facades\Mail; class ContactController extends Controller { public function index() { \Debugbar::info("index"); return view('contacts.contact'); } public function create(Requrst $request) { $this->validate($request, Contact::$rules); $contact_us = new Contact_us(); $inputs3 = $request->all(); $contact_us->name = $request->name; $contact_us->email = $request->email; $contact_us->body = $request->body; $contact_us->fill($inputs3); $contact_us->save(); } public function confirm(Request $request) { \Debugbar::info("test"); $this->validate($request, [ "email" => "required", "name" => "required", "body" => "required" ]); $inputs3 = $request->all(); return view('contacts.confirm', ['inputs3' => $inputs3]); } public function complete(Request $request) { \Debugbar::info("re_test"); $this->validate($request, [ "email" => "required", "name" => "required", "body" => "required" ]); $action = $request->get('action', 'back'); $inputs3 = $request->except('action'); \Debugbar::info($inputs3); if($action === 'post') { \Mail::to($inputs3["email"])->send(new ContactSendmail($inputs3)); $request->session()->regenerateToken(); return view('contacts.complete'); } else { return redirect() ->route('contact') ->withInput($inputs3); } }

app/Mail/ContactSendmail.php

<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class ContactSendmail extends Mailable { use Queueable, SerializesModels; private $name; private $email; private $body; public function __construct($inputs3) { $this->name = $inputs3['name']; $this->email = $inputs3['email']; $this->body = $inputs3['body']; } public function build() { return $this ->from('自分のユーザーネーム@gmail.com') ->subject('自動送信メール') ->view('contacts.mail') ->with([ 'name' => $this->name, 'email' => $this->email, 'body' => $this->body ]); } }

resources/views/contacts/mail.blade.php

お問い合わせ内容を受け付けました<br> <br> ■お名前<br> {{!! $name !!}}<br> <br> ■メールアドレス<br> {{!! $email !!}}<br> <br> ■お問い合わせ内容<br> {{!! nl2br($body) !!}}<br>

resources/views/contacts/confirm.blade.php

@extends('layouts.layout') @section('title', 'お問い合わせ確認') @section('content') <form class="con-form" method="POST" action="{{ route('contact_complete') }}"> @csrf <label>お名前</label> {{ $inputs3['name'] }} <input name="name" type="hidden" value="{{ $inputs3['name']}}"> <label>メール</label> {{ $inputs3['email'] }} <input name="email" type="hidden" value="{{ $inputs3['email']}}"> <label>お問い合わせ内容</label> {{ $inputs3['body'] }} <input name="body" type="hidden" value="{{ $inputs3['body']}}"> <button type="submit" name="action" value="back" class="btn btn-primary">入力内容修正</button> <button type="submit" name="action" value="post" class="btn btn-default">この内容で問い合わせる</button> </form> @endsection

resources/views/contacts/complete.blade.php

@extends('layouts.layout') @section('title', 'お問い合わせ完了') @section('content') <h1>{{ __('送信完了しました') }}</h1> @endsection

web.php

Route::get('contact', 'ContactController@index')->name('contact'); Route::post('contact/confirm', 'ContactController@confirm')->name('contact_confirm'); Route::post('contact/complete', 'ContactController@complete')->name('contact_complete');

試したこと

gmailの2段階認証をオン、アプリパスワード取得しましたがメール送信する事ができませんでした。
teratailやgoogle検索で同様にGmailからの送信ができないサイトを参考にしましたが、できませんでした。

ryuujiさんのアドバイス検索で出てきたのに試せてなかったですm(__)m
ryuujiさんのGoogleアカウントの設定で「安全性の低いアプリからのアカウントへのアクセスを許可する」を有効にするの設定も行ってみたのですが、新たな長文エラーで
Failed to authenticate on SMTP server with username
が出ました。

それと他のユーザから「やってほしいことだけを記載した丸投げの質問」というご指摘を受けましたのでもう少し調べて試してみますm(__)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuii

2019/10/20 16:23

Googleアカウントの設定で「安全性の低いアプリからのアカウントへのアクセスを許可する」を有効になっておりますでしょうか?
jiro-

2019/10/21 13:28

Googleアカウントの設定で「安全性の低いアプリからのアカウントへのアクセスを許可する」を有効にし、アプリのパスワードを再取得するとメール送信する事ができました。 ありがとうございました!
guest

回答1

0

ベストアンサー

送信に Gmail を使用するのであれば、OAuth 2.0 を使用した接続が適切かと。

投稿2019/10/20 23:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiro-

2019/10/21 13:10

ご返信遅くなり申し訳ありませんm(__)m OAuth2.0というのがどういったものか、わからないので調べて試してみます。 ありがとうございます。
jiro-

2019/10/21 13:29

OAuthを使うとセキュリティ面が上がりそうなので、調べて使えるようにしてみます。 ご助言ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問