Engine Yard

  1. SendGridと連携するRubyアプリケーションの発行
  2. SendGridと連携するPHPアプリケーションの発行

SendGridと連携するRubyアプリケーションの発行

Engine Yard向けのコードを作成/編集する

フレームワークを利用せずにRubyを利用している場合、コードサンプルRubyを利用してください。

メールを送信するだけの場合、ActionMailer 参照)を利用することができます。また、より高度な機能のために、SendGrid rubygemを利用することができます。

SendGridではGitHub上にActionMailerを利用したメール送信と、Parse Webhookを利用してメールを受信するサンプルアプリケーションを提供しています。

Engine Yardインスタンスを作成/設定する

  1. サンプルアプリケーションを利用するか、Gitリポジトリを作成します。
  2. 新しいEngine Yardクラウドアプリケーションを作成して、Rubyを選択します。
  3. アプリケーションの設定を行います。

    Configure the application

  4. 次にGitからの発行をセットアップします。
  5. Engine Yard上にアプリケーション環境を作成します。サンプルアプリケーションを動作させるためにランタイムをRubyに変更してDatabaseをMySQL 5.5.xに変更します。
  6. 環境をセットアップして起動します。

    Setup your environment

  7. 画面の一番下にスクロールして、「New Add-on」ボタンを選択します。

    New Add-on

  8. SendGridを選択します。このアカウントに初めてSendGridを追加する場合、SendGridのセットアップを行う必要があります。プランを選択します。
    • SendGridをセットアップ後、new Add-on処理をもう一度行う必要があります。Environmentで「New Add-on」を再度選択してください。
  9. SendGridを選択します。セットアップ画面でSendGridを追加するEnvironmentを選択します。

    Select an Environment to Add SendGrid

  10. ActionMailerを以下のように設定変更します。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.perform_deliveries = true
    config.action_mailer.raise_delivery_errors = true
    config.action_mailer.smtp_settings = {
         :authentication => :plain,
         :address => "smtp.sendgrid.net",
         :port => 587,
         :domain => EY::Config.get('base', 'domain_name'),
         :user_name => EY::Config.get(:sendgrid, 'SENDGRID_USERNAME'),
         :password => EY::Config.get(:sendgrid, 'SENDGRID_PASSWORD')
    }
    
  11. これでSendGridを使用してアプリケーションからメールを送信する準備が整いました。
  12. 12. メール受信時にサンプルアプリケーションを動作させる場合、IInbound Parse Webhookをセットアップする必要があります。

SendGridと連携するPHPアプリケーションの発行

Engine Yard向けのコードを作成/編集する

  1. Engine YardのインスタンスにはComposer(PHPパッケージ管理ツール)がプリインストールされています。プロジェクトのルートに「composer.json」という名前で以下のようなJSONファイルを作成してください:
    1
    2
    3
    4
    5
    
    {
      "require": {
        "sendgrid/sendgrid": "~1.0.0"
      }
    }
    
  2. デプロイ時にComposerは「vendor」ディレクトリを作成します。vendorディレクトリには「autoload.php」ファイルが含まれています。このファイルはSendGrid(または他のComposerパッケージ)を利用するスクリプトで必要とされます:
    1
    
    require 'vendor/autoload.php';
    
  3. SendGridライブラリをロードすると、SendGridの初期化を行う場合があります。Engine Yardでは環境変数(PHP内で$_SERVERにアクセスします)を利用した手軽な方法があります。SendGridの認証情報をコード内に埋め込むことを避けるためこれを利用します:
    1
    
    $sendgrid = new SendGrid($_SERVER['SENDGRID_USERNAME'], $_SERVER['SENDGRID_PASSWORD']);
    
  4. これで他の環境でもSendGridを使うことができるようになります。
    1
    2
    3
    4
    5
    6
    7
    8
    
    $mail     = new SendGrid\Mail();
    $mail->addTo('foo@bar.com')->
           addTo('dude@bar.com')->
           setFrom('me@bar.com')->
           setSubject('Subject goes here')->
           setText('Hello World!')->
           setHtml('<strong>Hello World!</strong>');
    $sendgrid->smtp->send($mail);
    

Engine Yardインスタンスを作成/設定する

  1. 新しいアプリケーションを作成します。言語はPHPに設定されていることを確認します。Engine YardはアプリケーションのデプロイにGitリポジトリを必要とします。サンプルアプリケーションまたは自身で作成したアプリケーションをデプロイすることができます。

    Creating an Engine Yard Application

  2. 次にアプリケーションに新しい環境を作成します。サンプルアプリケーションを使用している場合、データベースがMySQLに設定されていることを確認します。

    MySQL

  3. 設定を選択して「Boot」を選択します。
  4. 環境のAdd-onsセクションで「New Add-on」をクリックします。

    New Add-on

  5. SendGridを選択します。 このアカウントに初めてSendGridを追加する場合、SendGridのセットアップを行う必要があります。プランを選択します。
    • SendGridをセットアップ後、new Add-on処理をもう一度行う必要があります。Environmentで「New Add-on」を再度選択してください。
  6. SendGridを選択します。SendGridを追加したい環境を選択してください。

    Select an Environment to Add SendGrid

  7. 環境にSendGridを追加したら、環境のダッシュボードに戻ります。SendGridがAdd-onsセクションに表示されています。キー/変数をメモしてください(これらは非表示になっている可能性があります)。
  8. 8. アプリケーションインスタンス一覧から、アプリケーションインスタンスを見つけて、SSHをクリックします。これによりSSHクライアントが起動します。(これを実行するために、インスタンス起動前にEngine Yardに公開鍵を登録する必要があります。まだ登録していない場合、公開鍵を登録して環境に公開鍵を登録するよう修正してください。)
  9. 9. 次に環境変数を編集します。環境変数は以下の共有ファイルに保存されています。「nano /data/YOUR_APP_NAME/shared/config/env.custom 」以下の行を追加してください。
    1
    2
    
    env[SENDGRID_USERNAME] = YOUR_SENDGRID_USERNAME
    env[SENDGRID_PASSWORD] = YOUR_SENDGRID_PASSWORD
  10. 編集したファイルを保存するためにControl-Xを押下後、Yを押下してファイル名を確認後、Returnを押下します。SSHセッションからログアウトしてください。
  11. HTTPでインスタンスを表示してください。このサンプルを動作させるためにはSendGridのParse Incoming Emails設定画面でPOST先URLの登録が必要です。 Hostnameにメール受信に使用するドメイン名、UrlにHTTPで表示したEngine YardインスタンスのURL/email.phpを指定します。
  12. Hostnameに指定したドメインの任意のメールアドレス(例えば、test@yourdomain.com)にメールを送信すると、SendGrid経由で返信メールが自動的に送信されます。