-
Notifications
You must be signed in to change notification settings - Fork 9
sendgrid
SendGridはアプリケーションへ、スケール可能なemail配信機能、及び解析機能を提供するアドオンです。
SendGridのクラウドベースのインフラは、独自に作成したemailシステムをメンテナンスするコストと煩雑さを軽減してくれます。SendGridは、信頼のおける配信、スケーラビリティ、リアルタイムでの解析といった機能を提供します。カスタムでインテグレーションする際にも、柔軟なAPIが作業を容易にしてくれます。
SendGridは、CLIを経由してHerokuのアプリケーションにアタッチ可能です。:
:::term
$ heroku addons:add sendgrid:starter
-----> Adding sendgrid:starter to sharp-mountain-4005... done, v18 (free)
一度、SendGridがSENDGRID_USERNAME
を追加すると、アプリケーションのコンフィグ内でSENDGRID_PASSWORD
の設定が可能となり、新たに提供されたSendGridインスタンスへのアクセス証明書が発行されます。heroku config:get
コマンドを使用することで、確定されます。
:::term
$ heroku config:get SENDGRID_USERNAME
[email protected]
$ heroku config:get SENDGRID_PASSWORD
password
SendGridをインストール後、アプリケーションはアドオンと完全に統合されるよう設定されます。
RailsとActionMailerを使用していない場合、または、Cedarのスタックを使用している場合は、emailのフレームワークを手動でセットアップする必要があります。下記の例を参照して下さい。
RailsアプリケーションがActionMailerを使用している場合で、かつBambooのスタック上で動作させている場合、アドオンインストール後、git push
することで、Heroku側がアプリケーションを自動的に設定します。
Bambooでは、Railsに対し、ActionMailerを自動設定するプラグインがインストールされますので、注意して下さい。Cedar、または、Bamboo上のRails以外のアプリケーションでは、下記のセッティングが必要となります。
:::ruby
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}
我々は、開発者の皆さんに、ActionMailerよりシンプルで、net/smtpよりも便利なPonyに目を通すことを推奨しています。
:::ruby
Pony.options = {
:via => :smtp,
:via_options => {
:address => 'smtp.sendgrid.net',
:port => '587',
:domain => 'heroku.com',
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:authentication => :plain,
:enable_starttls_auto => true
}
}
Mail gemをインストールします。:
gem install mail
SendGridを通してメールを送るためには、Mailクラスが適切な値を持つように設定する必要があります :
:::ruby
require 'mail'
Mail.defaults do
delivery_method :smtp, {
:address => 'smtp.sendgrid.net',
:port => '587',
:domain => 'heroku.com',
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:authentication => :plain,
:enable_starttls_auto => true
}
end
メールを送ります。
:::ruby
Mail.deliver do
to '[email protected]'
from '[email protected]'
subject 'testing send mail'
body 'Sending email with Ruby through SendGrid!'
end
SendGridには、2人のコアな開発者がコーディングし、メンテナンスしているNode.jsのパッケージがあります。 コードが、Github上にあり、オープンソースで利用可能となっています。
以下の設定をpackage.jsonファイルに追加してください。
:::javascript
{
"name": "node-sendgrid-example",
"version": "0.0.1",
"dependencies": {
"express": "3.1.x",
"sendgrid": "0.3.0-rc.1.7"
},
"engines": {
"node": ">= 0.4.7"
}
}
以下のコマンドを使ってローカルでSendgridをインストールしてください :
npm install
このライブラリを使うために、あなたのSendGridの認証情報でsendgridオブジェクトを初期化してください :
:::javascript
var sendgrid = require('sendgrid')(
process.env.SENDGRID_USERNAME,
process.env.SENDGRID_PASSWORD
);
メールを送信します
:::javascript
sendgrid.send({
to: '[email protected]',
from: '[email protected]',
subject: 'Hello World',
text: 'Sending email with NodeJS through SendGrid!'
}, function(err, json) {
if (err) { return console.error(err); }
console.log(json);
});
SendGridのNode.jsパッケージに関するドキュメントは、 Githubで参照することが可能です。
このJavaプログラムは、MIMEマルチパート形式のemailを作成し、SendGridを通して送信されます。Javaは既にメールの送受信機能をライブラリに備えています。この例では、javamailを使用しています。
pom.xmlへ下記の属性を追加して下さい。:
::xml
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
Java class:
:::java
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import java.util.Properties;
public class SimpleMail {
private static final String SMTP_HOST_NAME = "smtp.sendgrid.net";
private static final String SMTP_AUTH_USER = System.getenv("SENDGRID_USERNAME");
private static final String SMTP_AUTH_PWD = System.getenv("SENDGRID_PASSWORD");
public static void main(String[] args) throws Exception{
new SimpleMail().test();
}
public void test() throws Exception{
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.port", 587);
props.put("mail.smtp.auth", "true");
Authenticator auth = new SMTPAuthenticator();
Session mailSession = Session.getDefaultInstance(props, auth);
// uncomment for debugging infos to stdout
// mailSession.setDebug(true);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
Multipart multipart = new MimeMultipart("alternative");
BodyPart part1 = new MimeBodyPart();
part1.setText("This is multipart mail and u read part1......");
BodyPart part2 = new MimeBodyPart();
part2.setContent("<b>This is multipart mail and u read part2......</b>", "text/html");
multipart.addBodyPart(part1);
multipart.addBodyPart(part2);
message.setContent(multipart);
message.setFrom(new InternetAddress("[email protected]"));
message.setSubject("This is the subject");
message.addRecipient(Message.RecipientType.TO,
new InternetAddress("[email protected]"));
transport.connect();
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
}
private class SMTPAuthenticator extends javax.mail.Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = SMTP_AUTH_USER;
String password = SMTP_AUTH_PWD;
return new PasswordAuthentication(username, password);
}
}
}
SendGridのダッシュボードに関するより詳しい機能説明については、sendgrid.com/docsのドキュメントを参照して下さい。
SendGridは、メッセージに今何が起こっているのかをレポートする多くの統計情報を提供してくれます。
ダッシュボードへは、CLIを経由してアクセス可能です:
:::term
$ heroku addons:open sendgrid
Opening sendgrid for sharp-mountain-4005…
または、Heroku apps web interfaceを訪問し、統計を確認したいアプリケーションを選択後、アドオンメニューからSendGridを選択して下さい。
プランのマイグレーションは、簡単に素早く行えます。新たなプランへのマイグレートは、heroku addons:upgrade
コマンドを使用して下さい。
:::term
$ heroku addons:upgrade sendgrid:platinum
-----> Upgrading sendgrid:platinum to sharp-mountain-4005... done, v18 ($399.95/mo)
Your plan has been updated to: sendgrid:platinum
SendGridは、CLI経由でリムーブ可能です。もし、誤ってSendGridをリムーブしてしまった場合、SendGridを再追加することで、アカウントのアクセスを復旧してくれるでしょう。
:::term
$ heroku addons:remove sendgrid
-----> Removing sendgrid from sharp-mountain-4005... done, v20 (free)
SendGridへのサポートとランタイムの問題は全て、Heroku Support channelsを経由して提示して下さい。サポート対象外の問題やプロダクトへのフィードバックに関しても、歓迎しています。こちらで情報を提供して下さい。http://support.sendgrid.com/home
その他のリソースが以下で利用可能です。: