Rubyメールの送信
8676 ワード
あなたが働くRubyアプリを持って、それに電子メール配信機能を加える必要があると言いましょう.これは、ユーザー認証、または他の種類のトランザクションメールに関連する可能性があります、それは違いはありません.このチュートリアルは、Rubyでメールを送信するのを支援することを目的としています.
あなたが完全な記事を読みたいならば、Mailtrapのブログの上でそれをチェックしてください Sending Emails with Ruby
主に、3つのオプションのいずれかを選択することができます.
最も簡単なのはNET ::SMTPクラスを使用しています.これは、SMTP経由で電子メールを送信する機能を提供します.このオプションの欠点は、Net ::SMTPがメールを構成する機能を欠くということです.あなたは常に自分自身を作成することができますが、これは時間がかかります.
番目のオプションは、メール、ポニー、または他のような専用ルビー宝石を使用することです.これらのソリューションは、シンプルで効果的な方法で電子メールの活動を処理することができます.アクションメイラーはレールのプリズムを通して完璧な電子メールソリューションです.そして、おそらく、これはあなたの選択になります.
三つ目のオプションはクラスソケットです.主に、このクラスでは、プロセス間またはプロセス内の通信を設定できます.したがって、メール送信も同様に実装することができます.しかし、実際には、ソケットが広範な機能を提供していないということです.
さて、説明した解決策を使ってメールを送りましょう.
私たちの経験から、そのオプションの使用は、通常のWebアプリでは珍しいです.しかし、あなたが使用するならばmruby (いくつかのIOTデバイス上でのRuby言語の軽量化).また、Serverlessなコンピューティングで使用されるなら、それはします.AWS Lambda . 最初にこのスクリプトの例をチェックしてください.そうすれば詳細にそれを通過します.
その後、
Ruby Cookbookでは、電子メールを手動で構築しなければならないので、Net ::SMTPライブラリで電子メールを送ることはミニマリズムと呼ばれています.それにもかかわらず、あなたが考えるかもしれない絶望的ではない.どのようにHTMLコンテンツを使用して電子メールを強化することができますし、添付ファイルを追加する方法を見てみましょう.
でのメールの送信
メッセージセクションを参照するこのスクリプト例をチェックしてください.
に関しては
MIMEのバージョンとcontent typeを除いて、他のMIMEヘッダを使用できます. の添付ファイルをメールで送信する
添付ファイルなどPDFファイルを追加しましょう.この場合、我々は更新する必要があります
第1部主主犯
確かに、できます.
ルビー生態系では、あなたの電子メールの経験を送信を向上させることができる特定の電子メールの宝石を見つけることができます.
Rubyメール
このライブラリは、電子メールを送信し、受信を含むすべての電子メール関連の活動を管理するためのアクセスの単一のポイントを与えることを目的としています.
ポニー
あなたは、1つのコマンドで電子メールを送ることについておとぎ話を聞いたかもしれません.あなたの帽子を保持し、それが本当だし、提供する原因Pony ジェム.
アクティメーラー
これは、レール上のメールを送信するための最も人気のある宝石です.場合にはあなたのアプリケーションの上に書かれている、ActionMailer確かに来るでしょう.それはあなたのメールのクラスとビューを使用してメールを送信することができます.
セットアップは非常に簡単です.デモインボックスに入ったら、SMTP設定タブでSMTP資格情報をコピーし、コードに挿入します.または、統合セクションで簡単なメッセージのテンプレートを使用する準備ができます.ちょうどあなたのアプリケーションが組み込まれているプログラミング言語やフレームワークを選択します.
クリエイトアMailtrap account そして、無料で自分でそれをテストしてみてください!
あなたはどのようにテストし、Rubyでメールを送信する方法についての完全なチュートリアルを読んだことがあります.まだルビーメール、ポニーとアクションのメーラーになるときにチェックアウトする多くがあります.Ruby Gems & SocketクラスについてSending Emails with Ruby article Mailtrapで.入出力
あなたが完全な記事を読みたいならば、Mailtrapのブログの上でそれをチェックしてください Sending Emails with Ruby
Rubyメールを送信するためのオプション
主に、3つのオプションのいずれかを選択することができます.
最も簡単なのはNET ::SMTPクラスを使用しています.これは、SMTP経由で電子メールを送信する機能を提供します.このオプションの欠点は、Net ::SMTPがメールを構成する機能を欠くということです.あなたは常に自分自身を作成することができますが、これは時間がかかります.
番目のオプションは、メール、ポニー、または他のような専用ルビー宝石を使用することです.これらのソリューションは、シンプルで効果的な方法で電子メールの活動を処理することができます.アクションメイラーはレールのプリズムを通して完璧な電子メールソリューションです.そして、おそらく、これはあなたの選択になります.
三つ目のオプションはクラスソケットです.主に、このクラスでは、プロセス間またはプロセス内の通信を設定できます.したがって、メール送信も同様に実装することができます.しかし、実際には、ソケットが広範な機能を提供していないということです.
さて、説明した解決策を使ってメールを送りましょう.
ルビーでメールを送る方法
私たちの経験から、そのオプションの使用は、通常のWebアプリでは珍しいです.しかし、あなたが使用するならばmruby (いくつかのIOTデバイス上でのRuby言語の軽量化).また、Serverlessなコンピューティングで使用されるなら、それはします.AWS Lambda . 最初にこのスクリプトの例をチェックしてください.そうすれば詳細にそれを通過します.
require 'net/smtp'
message = <<END_OF_MESSAGE
From: YourRubyApp <[email protected]>
To: BestUserEver <[email protected]>
Subject: Any email subject you want
Date: Tue, 02 Jul 2019 15:00:34 +0800
Lorem Ipsum
END_OF_MESSAGE
Net::SMTP.start('your.smtp.server', 25) do |smtp|
smtp.send_message message,
'[email protected]',
'[email protected]'
end
これはSMTPを介してテキストメールを送信する簡単な例ですhere ). つのヘッダーを見ることができます:から、件名、日付、日付.あなたが電子メール本文から空白行でそれらを分離する必要があることに留意してください.同様に重要なのはSMTPサーバに接続することです.Net::SMTP.start('your.smtp.server', 25) do |smtp|
当然のことながら、‘your.smtp.server‘
, 25はデフォルトポート番号です.必要に応じて、ユーザー名、パスワード、または認証スキームのような他の詳細を指定することができます.以下のようになります.Net::SMTP.start('your.smtp.server', 25, ‘localhost’, ‘username’, ‘password’ :plain) do |smtp|
ここでは、ユーザ名とパスワードをプレーンテキスト形式でSMTPサーバに接続し、クライアントのホスト名をlocalhostとします.その後、
send_message
メソッドと送信者と受信者のパラメータをパラメータとして指定します.SMTPのブロック形式.スタートNet::SMTP.start('your.smtp.server', 25) do |smtp|
) SMTPセッションを自動的に閉じます.Ruby Cookbookでは、電子メールを手動で構築しなければならないので、Net ::SMTPライブラリで電子メールを送ることはミニマリズムと呼ばれています.それにもかかわらず、あなたが考えるかもしれない絶望的ではない.どのようにHTMLコンテンツを使用して電子メールを強化することができますし、添付ファイルを追加する方法を見てみましょう.
でのメールの送信
メッセージセクションを参照するこのスクリプト例をチェックしてください.
message = <<END_OF_MESSAGE
From: YourRubyApp <[email protected]>
To: BestUserEver <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: Any email subject you want
Date: Tue, 02 Jul 2019 15:00:34 +0800
A bit of plain text.
<strong>The beginning of your HTML content.</strong>
<h1>And some headline, as well.</h1>
END_OF_MESSAGE
メッセージ本体のHTMLタグとは別に、2つの追加ヘッダがあります.MIME-Version
and Content-type
. MIMEは多目的インターネットメール拡張子を意味します.これは、単一のメッセージ本文で別のコンテンツタイプを結合することができますインターネット電子メールプロトコルへの拡張です.値MIME-Version
は典型的に1.0である.メッセージがMIMEフォーマットであることを示します.に関しては
Content-type
ヘッダーは、すべてクリアです.この場合、HTMLとプレーンテキストの2種類があります.また、定義境界を使用してこれらのコンテンツタイプを分離するようにしてください.MIMEのバージョンとcontent typeを除いて、他のMIMEヘッダを使用できます.
Content-Disposition
– プレゼンテーションスタイル(インラインまたは添付ファイル)を指定しますContent-Transfer-Encoding
– バイナリエンコードからテキストエンコーディングスキーム( 7ビット、quoted - printable、base 64、8 bit、binary )を表します.添付ファイルなどPDFファイルを追加しましょう.この場合、我々は更新する必要があります
Content-type
混合する.また、pack("m")
添付ファイルをbase 64エンコードでエンコードする機能.require 'net/smtp'
filename = "/tmp/Attachment.pdf"
file_content = File.read(filename)
encoded_content = [file_content].pack("m") # base64
marker = "AUNIQUEMARKER"
その後、メールの3つの部分を定義する必要があります.第1部主主犯
part1 = <<END_OF_MESSAGE
From: YourRubyApp <[email protected]>
To: BestUserEver <[email protected]>
Subject: Adding attachment to email
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary = #{marker}
--#{marker}
END_OF_MESSAGE
パート2 -メッセージアクションpart2 = <<END_OF_MESSAGE
Content-Type: text/html
Content-Transfer-Encoding:8bit
A bit of plain text.
<strong>The beginning of your HTML content.</strong>
<h1>And some headline, as well.</h1>
--#{marker}
END_OF_MESSAGE
第3部アタッチメントpart3 = <<END_OF_MESSAGE
Content-Type: multipart/mixed; name = "#{filename}"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename = "#{filename}"
#{encoded_content}
--#{marker}--
END_OF_MESSAGE
Now, we can put all the parts together and finalize the script. That’s how it will look:
require 'net/smtp'
filename = "/tmp/Attachment.pdf"
file_content = File.read(filename)
encoded_content = [file_content].pack("m") # base64
marker = "AUNIQUEMARKER"
part1 = <<END_OF_MESSAGE
From: YourRubyApp <[email protected]>
To: BestUserEver <[email protected]>
Subject: Adding attachment to email
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary = #{marker}
--#{marker}
END_OF_MESSAGE
part2 = <<END_OF_MESSAGE
Content-Type: text/html
Content-Transfer-Encoding:8bit
A bit of plain text.
<strong>The beginning of your HTML content.</strong>
<h1>And some headline, as well.</h1>
--#{marker}
END_OF_MESSAGE
part3 = <<END_OF_MESSAGE
Content-Type: multipart/mixed; name = "#{filename}"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename = "#{filename}"
#{encoded_content}
--#{marker}--
END_OF_MESSAGE
message = part1 + part2 + part3
begin
Net::SMTP.start('your.smtp.server', 25) do |smtp|
smtp.send_message message,
'[email protected]',
'[email protected]'
end
私はNet ::SMTPで複数の受信者に電子メールを送ることができますか?確かに、できます.
send_message
受信者のメールを含む2番目以降の引数を期待します.例えば、Net::SMTP.start('your.smtp.server', 25) do |smtp|
smtp.send_message message,
'[email protected]',
'[email protected]',
‘[email protected]’,
‘[email protected]
end
メールを送信するためのベストルビー宝石
ルビー生態系では、あなたの電子メールの経験を送信を向上させることができる特定の電子メールの宝石を見つけることができます.
Rubyメール
このライブラリは、電子メールを送信し、受信を含むすべての電子メール関連の活動を管理するためのアクセスの単一のポイントを与えることを目的としています.
ポニー
あなたは、1つのコマンドで電子メールを送ることについておとぎ話を聞いたかもしれません.あなたの帽子を保持し、それが本当だし、提供する原因Pony ジェム.
アクティメーラー
これは、レール上のメールを送信するための最も人気のある宝石です.場合にはあなたのアプリケーションの上に書かれている、ActionMailer確かに来るでしょう.それはあなたのメールのクラスとビューを使用してメールを送信することができます.
MailTapを使用したメール送信テスト
セットアップは非常に簡単です.デモインボックスに入ったら、SMTP設定タブでSMTP資格情報をコピーし、コードに挿入します.または、統合セクションで簡単なメッセージのテンプレートを使用する準備ができます.ちょうどあなたのアプリケーションが組み込まれているプログラミング言語やフレームワークを選択します.
require 'net/smtp'
message = <<END_OF_MESSAGE
From: YourRubyApp <[email protected]>
To: BestUserEver <[email protected]>
Subject: Any email subject you want
Date: Tue, 02 Jul 2019 15:00:34 +0800
Lorem Ipsum
END_OF_MESSAGE
Net::SMTP.start('smtp.mailtrap.io', 587, '<username>', '<password>', :cram_md5) do |smtp|
smtp.send_message message,
'[email protected]',
'[email protected]'
end
すべてが大丈夫なら、Mailtrapのデモ受信トレイにあなたのメッセージが表示されます.また、HTMLコンテンツと添付ファイルを使用して電子メールをチェックしようとすることができます.MailTrapは、どのようにあなたの電子メールが表示され、必要に応じてHTMLをチェックすることができます.クリエイトアMailtrap account そして、無料で自分でそれをテストしてみてください!
あなたはどのようにテストし、Rubyでメールを送信する方法についての完全なチュートリアルを読んだことがあります.まだルビーメール、ポニーとアクションのメーラーになるときにチェックアウトする多くがあります.Ruby Gems & SocketクラスについてSending Emails with Ruby article Mailtrapで.入出力
Reference
この問題について(Rubyメールの送信), 我々は、より多くの情報をここで見つけました https://dev.to/alexandramt/sending-emails-with-ruby-3co1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol