前提・実現したいこと
いつもお世話になっております。
PHPのみでwebアプリケーションを作成しています。
ローカル環境ではメール送信できましたが、herokuにデプロイ後、メール送信できなくなり、sendgridを利用しました。
下記の記事を参考にしました。
Heroku + PHP + SendGrid でメールを送信する
https://qiita.com/shin1x1/items/c8569424753d1a2c36f8
記事の PHPからメール送信 まで問題なく進み、
require DIR . '/../vendor/autoload.php';
上記の読み込みも問題なかったのですが、$sendgrid〜の部分をどこに入れるのかがわからず、メール送信のsendMail()に追加しました。
//=============================== // メール送信 //=============================== function sendMail($from, $to, $subject, $comment){ if(!empty($to) && !empty($subject) && !empty($comment)){ // 文字化けしないように設定(お決まりパターン) // mb_language("Japanese"); //現在使っている言語を設定する // mb_internal_encoding("UTF-8"); //内部の日本語をどうエンコーディング(機械が分かる言葉へ変換)するかを設定 $sendgrid = new \SendGrid(getenv('SENDGRID_USERNAME'), getenv('SENDGRID_PASSWORD')); $email = new \SendGrid\Email(); $email->addTo($to)-> setFrom($from)-> setSubject($subject)-> setText($comment); $sendgrid->send($email); // メールを送信(送信結果はtrueかfalseで返ってくる) // $result = mb_send_mail($to,$subject,$comment,"From:".$from); // 送信結果を判定 // if($result) { // debug('メールを送信しました。'); // }else { // debug('【エラー発生】メールの送信に失敗しました。'); // } } }
現在、mb_send_mailは使用せず、文字化け設定も外していますが、つけていてもメール送信はどちらもできませんでした。下記がメール送信で実行したコードです。
// メールを送信 $from = 'keigo2356@gmail.com'; $to = $_SESSION['auth_email']; $subject = '【パスワード再発行完了】 | YOURSELF'; // EOT EndOfFileの略 $comment = <<<EOT 本メールアドレス宛にパスワードの再発行を致しました。 下記のURLにて再発行パスワードをご入力頂き、ログインください。 EOT; sendMail($from, $to, $subject, $comment);
メール送信によるエラーは起きていない為、sendgridの設定が間違っていてメールが送信できていないと考えています。どういった原因が考えられますでしょうか?
パソコンはmacOSを使用しています。
わかる方教えて頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー