Drupal 7でブログを更新するたびにユーザーが電子メールを受信できるようにするにはどうすればよいですか?


11

私はDrupal 7に英語と日本語のブログを持っています。このブログは、組み込みのブログモジュールではなく、カスタムコンテンツタイプとビューを使用して作成しました。

各言語用のRSSフィード(ビューで作成)があります。ユーザーがサブスクライブして、コンテンツタイプ「ブログ」に対するすべての英語の更新、またはコンテンツタイプ「ブログ」に対するすべての日本語の更新を受け取ることを許可したいと考えています。(私はほとんどのユーザーがどちらか一方の言語のみを望んでいると予想しています。ユーザーが本当に両方の言語を望んでいる場合、それらを2回サブスクライブさせてもかまいません。)

RSSフィードでFeedburnerを使用することを検討しましたが、FeedburnerモジュールはD7用に更新されておらず、外部サービスに依存したくありません。(モジュールなしでFeedburnerを設定しようとすると、サポートリンクで検証できるにもかかわらず、RSSフィードが存在しないことがわかりました。)

Simplenewsモジュールも確認しましたが、そのモジュールでは各ニュースレターの投稿を個別に作成する必要があるようです。ブログに更新を投稿したときに、購読しているユーザーに自動的に電子メールを送信したいのです。

これを行う方法はたくさんあると思いますが、「メールヘルパー」タイプのモジュールが多すぎるため、どこから始めればよいか途方に暮れています。

私の要件を要約するには、次のことを行います。

  • 適切な言語の新しいブログ投稿が追加されたときに、購読者に自動的に電子メールを送信します。
  • 認証済みユーザーと匿名ユーザーの両方がサブスクライブできる必要があります。
  • サブスクリプションには確認が必要です(法的要件)。
  • MIMEメールモジュールとの互換性は素晴らしいボーナスです。

回答:


1

別の代替オプションは、Google Feedburnerを使用してユーザーに代わってメールを送信することです。

詳細については、オンラインドキュメントを参照してください。

Googleフィードバーナーがフィードを「焼き付け」たら、ユーザーがメールアラートを受信できるように、サインアップフォームの埋め込みコードを取得できます。これがあなたのニーズに非常によく合う理由は、すべてが高品質のRSSフィードソースを使用することに関係しており、Viewsがこれを生成できるからです。唯一の真の問題は、RSS(したがって電子メール)のみでコンテンツ全体を表示するか、ティーザーを表示するかです。

これが上記のニュースレター/トリガーのオプションよりも優れているもう1つの利点は、毎日のダイジェストのみを送信するため、書き込みが行われたRSSフィードごとに1日に最大1つの電子メールが送信されることです。これにより、アクティブな日があるときに忠実な購読者にスパムを送信するのを防ぐことができます。

Googleフィードバーナーの機能は次のとおりです(上記のドキュメントから直接):

サブスクリプション管理

  • リストを表示して並べ替える
  • 個別の電子メールアドレスをアクティブ化、非アクティブ化、および削除する
  • リストをExcelまたはCSV形式でエクスポートする
  • 退会時にオプションのメールを受け取る

コミュニケーション設定

  • メールでフィードを受信するようにオプトインした購読者に送信されるメールの件名と本文をカスタマイズします。これは、メールをローカライズする場合に便利です。
  • 重要な注意:メールはテキストのみであり、サブスクリプションをアクティブ化するには、元の$ {confirmlink}参照を確認メールに含める必要があります。

メールブランディング

  • サブスクライバーに送信される電子メールの件名とタイトルをカスタマイズする
  • HTMLメールメッセージの上部に表示されるカスタムロゴを追加する
  • 本文と見出しのテキストのフォント、サイズ、色、およびリンクの色を変更する

配送オプション

  • タイムゾーンを選択してください
  • 毎日のダイジェストが送信される2時間の配信ウィンドウを選択します

これを設定する方法のサンプルチュートリアルはここにあります


Feedburnerを提案していただきありがとうございます。元の質問で述べたように、フィードを検証できたにもかかわらず、フィードの書き込みは拒否されました。それが私に与える正確なエラーは、「ソースフィードの取得中にHTTPエラーコード400を受信しました。」です。しかし、エラーページの[このフィードを検証]リンクをクリックすると、フィードが有効であることが示されます。残念ながら、Feedburnerにもサポートオプションはありません。
Patrick Kenny

同じエラーが発生しましたが、GoogleフィードバーナーがSSLをサポートしていないという問題がありました。簡単な解決策は、フィードへのHTTPアクセスを許可することです。
wiifm 2012

1
フィードへのHTTPアクセスを許可するオプションがない場合、最近のプロジェクトでは、実際にRSSフィードをGoogleリーダー経由でプロキシし、次にGoogleフィードバーナー(乱雑ですが、機能します)にプロキシしました。このプロセスからのフィードの例を以下に示します。feeds.feedburner.com/ TranspowerNewsFeed-サイト全体のpowerpower.co.nzはHTTPSで保護されています
wiifm

Simplenewsを使用するよりも、Googleリーダーを介してSSLリダイレクトを行う必要がある場合でも、Feedburnerで設定する方がはるかに簡単であることが判明したため、この回答に賞金を授与しました。
Patrick Kenny

5

これは簡単に入手できます。いくつかの手順を紹介します。

それを達成するには、実際には少なくとも2つの方法があります。

A.トリガーの使用(コアモジュール)

  1. まず、コアモジュールのトリガーをアクティブにします。これにより、基本的なトリガー(この場合はUPDATEトリガー)と、条件が満たされたときに実行するアクションが提供されます。

  2. [管理]> [構成]> [アクション]に移動し、[高度なアクションを作成]を選択して、[電子メールを送信]を選択します。受信者フィールドでは、登録済みのすべてのユーザーと一致するように、simplenewsモジュールによって提供される適切なトークンを選択する必要があります。(トークンモジュールもインストールされていることを確認してください)

  3. [管理]> [構造]> [トリガー]に移動し、[ノード]タブに移動します。3番目を選択します。トリガー:更新されたコンテンツの保存後。

さらに制御が必要な場合は、フックを実装します

function YOURMODULE_trigger_info_alter(&$ triggers){//ここでdpm($ triggers)を使用して、更新トリガーの場所を確認し、変更を行います。}?>

B.ルールの使用(contribモジュール)基本的に同じこと。行き詰まった場合は、このブログの同様の問題で次の手順に従ってくださいhttp : //adellefrank.com/blog/how-to-email-notifications-comments-drupal7


1
「トリガー:新しいコンテンツを保存した後」は投稿の作成時に単一のメールを送信しますが、「トリガー:更新したコンテンツを保存した後」は投稿に更新が行われた場合に新しいメールを送信します。
Citricguy 2012

1
ルールを使用する場合、Simplenewsモジュールが提供する「電子メールニュースレターの送信」アクションの代わりに「電子メールの送信」アクションを使用するのはなぜですか?
Patrick Kenny

5

Simplenewsモジュールは、必要なすべてのことを行います。各ブログ投稿が自動的にニュースレターになり、購読者に送信されるように設定できます。Simplenews設定で、コンテンツタイプBlogをニュースレターソースとして選択します。

これを行うには:

  1. ブログコンテンツタイプの構成フォームを開く(/ admin / structure / types / manage / blog)
  2. 「公開オプション」タブで「simplenewsニュースレターとして使用」にチェックを入れます

Simplenews設定のどこに「ニュースレターソース」オプションがありますか?私はすべてのメニューを試してみましたが、それに似たものは何も見つかりませんでした...
Patrick Kenny

上記の更新された回答を参照してください。
ユージーンフィデリン2012

1

プログラムで実行する場合は、drupal_mail($ module、$ key、$ to、$ language、$ params = array()、$ from = NULL、$ send = TRUE)を参照してください

ノードが更新されると、フックhook_node_update($ node)が起動されます。独自の作成済みメール形式を作成する場合は、hook_mail($ key、&$ message、$ params)を使用します。したがって、最初に2つのフックを記述して、最初にhook_node_updateとhook_mailを記述する必要があります。hook_node_update内で、hook_mailを呼び出すdrupal_mail関数を記述する必要があります。


0

私のサンドボックスモジュールの合計サブスクリプションを使用できます

このモジュールはdrupalプロジェクトキューにあります。ここにリンクがあります:- リンク

私はそれがあなたが必要とする機能を与えると思います。


1
このモジュールがユーザーの問題をどのように解決するかについて少し説明していただけますか?
mpdonadio
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.