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

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

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

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

Q&A

解決済

2回答

1807閲覧

Amazon SES SMTPで自分のドメインからPHPでメールを送信できるようにしたい ムームドメインの設定

Blando

総合スコア8

PHP

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

0グッド

0クリップ

投稿2021/05/06 08:18

編集2021/05/07 01:11

Amazon SESを利用して自分のドメインからPHPでメールを送信できるようにしたいとおもっています。
ドメインはムームドメインで管理しております。

Amazon SESでは
Domain Identities
Verification Status
DKIM Status
Enabled for Sending
これらはVerifyとなっております。

Amazonより提供されてる
1.TXT Name
2.DKIMでCNAMEを3つ
ムームドメインの管理画面より設定しました。

設定して2日ほど立ちましたので、テストメールを送信しましたが。

PHPの送信の設定は以下になります。

$config_email=[ 'smtp_crypto' => 'tls', "protocol" =>"smtp", "smtp_host" => "秘密", "smtp_port"=>587, "smtp_user"=>'秘密', "smtp_pass"=>"秘密", 'crlf' => "\r\n", 'newline' => "\r\n" ]; ```--- Codeigniter4 を利用しており 以下の関数で送信をしています。 ```ここに言語を入力 public function Send($send_email,$subject,$message){ $email = \Config\Services::email(); //amazon sesの設定情報が入ります。 $email->initialize($config_email); $email->setFrom($this->my_email, $this->my_email_name_ja); $email->setTo($send_email); $email->setReplyTo($this->my_email); $email->setSubject($subject); $email->setMessage($message); print $send_email; $email->send(); $data = $email->printDebugger(); print_r($data); }

以下のエラーがでてきます。
You did not specify a SMTP hostname.
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.

ムームドメインの設定は関係ないのでしょうか?

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

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

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

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

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

itagagaki

2021/05/06 08:27

PHPでそのコンフィギュレーションを設定して送信を行っているコードを質問内で提示できますか?
Blando

2021/05/06 08:41

早速の回答ありがとうございます。 Codeigniter4 を利用しており 以下の関数で送信をしています。 public function Send($send_email,$subject,$message){ $email = \Config\Services::email(); //amazon sesの設定情報が入ります。 $email->initialize($config_email); $email->setFrom($this->my_email, $this->my_email_name_ja); $email->setTo($send_email); $email->setReplyTo($this->my_email); $email->setSubject($subject); $email->setMessage($message); print $send_email; $email->send(); $data = $email->printDebugger(); print_r($data); } サーバーはMixhostをつかっており、Mixthostが用意するSMTPを使っての場合はメールは送信することができます。Amazon SESの場合には前述のエラーが返ってきます
itagagaki

2021/05/06 08:42

コードは質問内に提示してください。 質問は編集できます。
guest

回答2

0

ベストアンサー

別回答にしますね。
CodeIgniter4を解析したところ、keyが違っているようでした。
下記をお試しください。

'SMTPCrypto' => 'tls', "protocol" =>"smtp", "SMTPHost" => "秘密", "SMTPPort"=>587, "SMTPUser"=>'秘密', "SMTPPass"=>"秘密", 'CRLF' => "\r\n", 'newline' => "\r\n"

投稿2021/05/07 01:44

編集2021/05/07 01:45
itagagaki

総合スコア8402

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

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

Blando

2021/05/07 07:26

こんなケアレスミスしてたとは。ありがとうございます。送信できました。 助かりました。
guest

0

これを試してみてください。

PHP

1public function Send($send_email,$subject,$message){ 2$config = Array( 3 'protocol' => 'smtp', 4 'smtp_host' => '秘密', 5 'smtp_user' => '秘密', 6 'smtp_pass' => '秘密', 7 'smtp_port' => 465, 8 'mailtype' => 'text', 9 'charset' => 'utf-8', 10 'wordwrap' => TRUE, 11 'smt_timeout'=>'20', 12 'tls'=>TRUE 13); 14$this->load->library('email', $config); 15$this->email->set_newline("\r\n"); 16 17$this->email->setFrom($this->my_email, $this->my_email_name_ja); 18$this->email->setTo($send_email); 19$this->email->setReplyTo($this->my_email); 20 21$this->email->setSubject($subject); 22$this->email->setMessage($message); 23print $send_email; 24 25$result = $this->email->send(); 26$data = $this->email->printDebugger(); 27print_r($data); 28}

投稿2021/05/06 08:50

itagagaki

総合スコア8402

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

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

Blando

2021/05/06 08:58

回答ありがとうございます。 Codeigniter 3の記載かとおもいます。 Codeigniter4では $this->load->library('email', $config); が機能しないようです。
itagagaki

2021/05/06 09:20

そうでしたか。 ちょっと試しにですが、コンフィギュレーションに以下を加えて試してみていただけますか? 'crlf' => "\r\n", 'newline' => "\r\n",
Blando

2021/05/06 13:49

回答ありがとうございます。 追加しましたが、エラーは同じです。 You did not specify a SMTP hostname. Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method. 送信元がamazon sesで認証されていないのではないかとおもいます。 それで、ドメインの設定をムームドメインでしたのですが、関係ないのでしょうか?
itagagaki

2021/05/06 14:25 編集

Amazon SES のコントロールパネルでの Verify a New Email Address は成功していますか?
Blando

2021/05/06 15:33

はい。もちろんです。
itagagaki

2021/05/06 16:01 編集

だとしたら $email->initialize($config_email); が怪しい気がしますね。 [CodeIgniter4/Email.php at develop · codeigniter4/CodeIgniter4] https://github.com/codeigniter4/CodeIgniter4/blob/develop/system/Email/Email.php を見てみると、initialize($config) では if ($config instanceof \Config\Email) { $config = get_object_vars($config); } のようにしているのがちょっと気になりました。 質問を編集して、$config_email の定義全体を見せていただけますか?
Blando

2021/05/07 01:12

何度もありがとうございます。 現在の設定を一部伏せて記載しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問