GitHub+PDTでPUSH/PULLする時にログインできない

そもそもGitHubにgitコマンドからログインするには「Personal access tokens」が必要で、Web上でログインするパスワードの代わりにこのTokenを利用する。

Tokenの作り方

  1. GitHubにログインする
  2. https://github.com/settings/tokensにアクセスする
  3. 「Generate new token」ボタン
  4. 「Note」に識別名を記載
  5. 「Expiration」でTokenの有効期間を指定
  6. 「Select scopes」で権限を付与
    ※よくわからない場合は「repo」にチェック
  7. 「Generate token」でTokenが作成される
  8. 遷移した先でトークンが表示されるので別のファイル等に書き残す!!
    ※表示が消えると確認手段がないので再作成することになる。
カテゴリー: git

LaravelでSMTP経由で複数の送信元メールアカウントを切り替える

こんなよくあるシチュエーションが上手くいかずに苦悩したので備忘も兼ねて

Configオブジェクトの設定を書き換えて送信すればいいよね。
って思ったので


//foo@example.comアカウントで送信
Config::set('mail.username', 'foo@example.com');
Config::set('mail.password', 'barpass');
Mail::raw($body, function($message) {
  $message->to('dest@example.com');
  $message->subject("test");
});

//bar@example.comアカウントで送信
Config::set('mail.username', 'bar@example.com');
Config::set('mail.password', 'barpass');
Mail::raw($body, function($message) {
  $message->to('dest@example.com');
  $message->subject("test");
});

こんな感じに書いた。
ちなみに.envでは
MAIL_USERNAME=hoge@example.com
MAIL_PASSWORD=hogepass
としていた。

このコードを動かしてみると
1回目のメール送信はfoo@example.comアカウントでプログラムした通りに送信してくれる。
ところが、
2回目のメール送信もfoo@example.comアカウントでメール送信してしまう。

原因

この現象を御幣を恐れず簡単に説明すると。
Mailがstaticなので1回目の処理で作られたメールアカウント(transport)を持っていて
2回目はインスタンスがある為に新規にメールアカウント(transport)のインスタンスを作らずに
1回目のメールアカウント(transport)を引き継いで処理してしまう。

回避方法

何かメールアカウントをクリアする方法があるのかと調べましたが見つからず、
どうやらTransportのインスタンスを個別に作らないとだめらしい。

やり方を書いてくださっているページがあったのでリンクさせていただきます。
LaravelのMailで、機能ごとに送信元アドレスを切り替えたい(Gmailなど)時にめっちゃ詰まった話