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

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

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

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

意見交換

10回答

1124閲覧

メールの大量配信を行う時にもっともスマートな方法を知りたい

thizm

総合スコア5

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

4クリップ

投稿2024/04/18 01:47

テーマ、知りたいこと

メールの大量配信(想定件数/月8,000件~10,000件程度)について、どのようなやり方が一番スマートなのか知りたいです。

 

背景、状況

当初は送信リストをMySQLでDBとして作成し、PHPで1日1,000~2,000件ずつCronで処理し、送信済みのアドレスにはフラグをたてて、数日かけて順に処理していこうかなと思っていたのですが、よくよく調べるとメール配信専用のAPI(Sendgrid等)があることが分かりました。

導入すると何が良いのか、PHPで処理するのとどう違うのか、Qiitaの以下記事を見てみましたがいまいち理解ができません…。

メール運用がロストテクノロジーになっていく話
https://qiita.com/koichiro/items/d65ac1af03b9063f0592

 
なんとなく理解できたのは、下記のことです。(間違っているかもしれません。)

  • メールの処理が確実に行える
  • 送信後のアクションを拾える(開封済み等)

 
PHPでアナログ的に処理を作って行うよりも、このような配信サービスを使うと何が違うのか、何が良いのかを知りたいです。
ざっくりとした意見でも構いませんので、よろしくお願いします。

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

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

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

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

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

回答10

#1

AbeTakashi

総合スコア4549

投稿2024/04/18 01:58

編集2024/04/18 01:59

参考)
https://xtech.nikkei.com/atcl/nxt/column/18/00989/120500134/

単純にPHPからメールを送ると、リジェクト扱いもしくは迷惑メール扱いになると思います。今の時代はSPF、DKIM、DMARCに対応する必要がありますが、PHPだけでの実装はほぼ無理なのでかなりの構築コスト・運用コストがかかります。SMTPサーバの運用など含めて自前でやるコストとSendGrid等のサービスにお金を払うコストを比較すると、大半のケースは後者を選んだ方が安いという結論になると思います。

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

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

#2

poto568

総合スコア258

投稿2024/04/18 02:04

https://sendgrid.kke.co.jp/about/
↑このへんとか、そのリンク先とかを見ると何が良いかが書いてあります。

「一番」とか「もっとも」については存じません。

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

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

#3

thizm

総合スコア5

投稿2024/04/18 02:31

#1 AbeTakashiさん
ご意見ありがとうございます。
Gメールのポリシー変更の件ですよね。他にも携帯各社等の対策でSPF、DKIM、DMARC等の設定については必須であるということが、分かっています。現在カゴヤの共有レンタルサーバーでHPを運営していますが、DKIM/DMARCの設定は専用プランではないと設定できないとなっています。

この辺を代行(?)して行ってくれるのがsendgridのようなサービスという認識で良いでしょうか?

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

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

#4

AbeTakashi

総合スコア4549

投稿2024/04/18 02:39

編集2024/04/18 02:42

#3

「代行」というような感じではありませんが、適切な設定をすればDKIMやDMARCに対応したメールを短時間で大量に送信することができます(特にドメイン周りの設定などは自前で行う必要があります)。

あと、別件になりますがメールアドレスが消失して戻ってきた場合(バウンスメール)の対応がしやすいのもSendGridなどを使いたくなる要因の一つです。どのメールが届かず戻ってきたかがAPIを通じて簡単に把握できるので、次回送信時にはこれらを除外することで、迷惑メールと判断されにくくすることができます(除外する実処理は自前で実装する必要がありますが)。これを自前で実装するとなるとかなり骨が折れます。

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

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

#5

pcs

総合スコア363

投稿2024/04/18 04:25

メール送信はもうAWSのSESしか使ってない。

別に最近変わった話ではなく常識すぎてこんなこと誰も議論してない。
そのQiitaの記事でさえ10年近く前。
レンタルサーバーのsendmailでPHPから素朴にメール送信なんてことをやってたのは前世紀の話。

長年の迷惑メール被害のせいでこんな送信方法では届かない。
送信できてるように見えても届いてるかどうか分からない不安定なメールに依存した設計はできないので確実に届く方法を使う以外の選択肢がない。
「ユーザー登録後のメール確認」「パスワードを忘れた時にリセット」
色々なところでメールが必要だけど届かなかったら破綻する。

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

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

#6

thizm

総合スコア5

投稿2024/04/18 07:05

#5 pcsさん
ご意見ありがとうございます。
技術情報をググるとまだまだ最近の更新された情報もチラホラ出てくるので、まだまだ現役かと思っていました。
フリーや低価格のプランではIPが固定ではなく、危険だという記事も見つけました。
メール配信の主流?は、AWSなんですね。当たり前といえば当たり前かもですが、やはりAWS強いですね…

話がそれますが、AWSやGCSなどのクラウド系は料金体系が複雑だったり、高機能すぎて扱える自信がなく手を出せずに過ごしてます。。やはり、どこかの機会でいじってみるべきですね…

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

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

#7

otn

総合スコア84622

投稿2024/04/18 08:50

技術情報をググるとまだまだ最近の更新された情報もチラホラ出てくるので、まだまだ現役かと思っていました。

自分で構築したサーバーからの各種通知メール(cronからなど)を自分で受け取るのだけであれば、自前のSMTPサーバーだけでというのも現役じゃないかと思います。私が個人で使っているVPSはそうです。
不特定多数への大量配送はみなさんお書きの通りかと思います。

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

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

#8

take88

総合スコア1394

投稿2024/04/21 02:00

PHPでアナログ的に処理を作って行うよりも、このような配信サービスを使うと何が違うのか、何が良いのかを知りたいです。

まず、前提としてご理解いただきたいのは、メールは相手に届く保証のないサービスなんですね。ISP等による、スパム業者への対策の影響というのが背景にあるのですが、ざっくりいうと、SMTPで大量メール配信すると、スパム判定されちゃうんです。

システムから不特定多数にメールを配信した際に、相手に届く割合を、メール到達率と言ったりしますが、なにも対策せずメール配信をすると、メール到達率は低くなります。

メール到達率を上げるためには、IPレピュテーションのスコアを上げたり、SPF、DKIM、DMARCに対応したりといっった対策が必要です。また、バウンスメールの対策も必要で、DNS逆引きや、ブラックリスト対策、といったSMTPサーバーの適切な運用も重要になります。他にもいろいろな要素がありますので、考えなきゃいけないことが多すぎるんですね。

Sendgridなどのメール配信サービスはこういった対策を行っていますので、サービスを利用するだけで、運用コストをかけずに、メール配信率を高めることが期待できるというわけです。

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

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

#9

thizm

総合スコア5

投稿2024/04/29 02:25

開発等も行う専門的な人が私一人しかいないので、何が良いのか道筋が分からなかったのですが、
素人の安易な考えに対して、現役の方々のご意見等も聞けて大変参考になりました。
もしかしたら当たり前すぎる事かもしれませんが、わざわざ回答していただいた事に感謝します。
たった一言の情報でも調べる道しるべとなったり、今後の参考になります。

とりあえず、、、

  • 初めからアナログ的に処理(mb_send_mail等)するよりも、APIを使った配信の方が到達率が高く効率的
  • メール配信はAWSが強い(主流?)が、メリットデメリットを理解していればsendgridも悪くはない

ということなので、まずは手が出しやすそうなsendgridを使って開発をしてみたいと思います。
// クラウド系のサービスもいつかは手をだしたい…
// 余談ですが、4月23日のメールマガジンで「先週投稿された閲覧数の多い意見交換トップ3」に入ってびっくり!

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

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

#10

thizm

総合スコア5

投稿2024/04/30 00:46

#5 pcsさん
もうすでにSendgridで一通りの流れを構築してしまったのですが、
改めてAWSのSESについて調べると、コスパがかなり高いですね。

AWSって高いイメージがあったのですが、専用IP($24.95/月)設けても配信がそこまでなければ安く抑えられますね。無料枠もあるみたいなので、数か月はSendgridでやって、その間にSESに移行しようかと思います!

■参考サイト

【AWSコスト計算】Amazon SESの料金とは?毎月のコストを算出してみた。
https://go.dx.business/dev/aws/20110

料金 - Amazon SES | AWS
https://aws.amazon.com/jp/ses/pricing/

 
ご意見感謝です。ありがとうございます。

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

この意見交換はまだ受付中です。

会員登録して回答してみよう

アカウントをお持ちの方は

関連した質問