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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

958閲覧

Ruby Net/SMTP メールにダウンロードリンク貼りたい

kazuyakazuya

総合スコア193

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/08/14 10:06

編集2019/08/14 12:06

RubyのNet/SMTPを使ってメールを送ることに成功しました。(sendgridを使用)
そのメールにダウンロードリンクを貼りたいです。
以下コード

ruby

1require 'net/smtp' 2a = Net::SMTP.new("smtp.sendgrid.net", 587) 3a.enable_starttls 4a.start('loalhost'){|smtp| 5 smtp.authenticate("sendgridのユーザー","sendgridのパスワード") 6 smtp.send_message(<<-EndOfMail, '送信元アドレス', '送信先アドレス') 7 From: Your Name <from@example.com> 8 To: Dest Address <to@example.net> 9 Subject: test mail 10 Date: Sat, 23 Jun 2019 18:20:50 +0900 11 Message-Id: <unique.message.id.string@yourhost.example.com> 12  13 ここにダウンロードリンクを貼りたい 14 This is a test mail. 15 EndOfMail 16 17 18 } 19

上記のコードでメールを送れます。
以下が送りたいファイル(This is sample mail.という文字列が入っているだけのファイル)

This is sample mail.

ファイルを載せたいときどのようにすればいいのでしょうか?

Net/SMTP
ファイルを転送するためのメソッドが用意されているのかと思ったのですが
見た限りなかったです。。。

ruby

1File.open("sample","r")

ファイルを扱うのだから
上記のようなものを使うと思ったのですが
やはりわからないです。

分からないので参考になるリンクまたは説明をお願いします。

追記

ruby

1ruby -v 2> ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]

メールに「ファイルの添付」をしたくて質問をしました。

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

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

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

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

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

mokemokechicken

2019/08/14 11:37

単にDownload用のリンク(URL)を書きたいのでしょうか? それともメールに「ファイルの添付」をしたいのでしょうか?
mokemokechicken

2019/08/14 11:38

rubyのバージョンも書いておいてもらう方がいいかもしれないです。
mokemokechicken

2019/08/14 11:47 編集

あーあと、質問に書いてあるメールアドレスは本物でしょうか?(本物っぽい...) もしそうなら、書かないほうが良いと思うので、適当な名前にしておいたほうがいいですよ。 ※ 将来SPAMメールがすごいことになる可能性があります
kazuyakazuya

2019/08/14 12:03

ありがとうございます。 追記しておきます。 やはりアドレス公開は危なそうなので消しておきます。
guest

回答2

0

タイトルのようにダウンロードリンクを書きたいんじゃなくて、ファイルを添付したいと言うことですかね?
SMTPには、添付ファイルという概念は無いです。テキストしか送れません。
ファイルをテキスト化してメールに添付する方法は、昔は色々あったのですが、今はMIMEという方式を使います(Multipurpose Internet Mail Extension)。

どんな方式かは、添付ファイルのあるメールを受信したメールソフトで「ソースを表示」するとわかります。
「ソースを表示」の機能が無いメールソフトの場合は、、、、、ググってください。

普通のメールだと、
Content-Type: text/plain; charset=iso-2022-jp
とかのヘッダがあるところですが、添付有りの場合は、その部分が、
Content-Type: multipart/mixed; boundary="------_abcdefghijklmnopqrstu_"
のような、区切り行(boundary)を指定したマルチパートという形式になります。

自分で作る事もできますが、面倒くさいので、他の回答のとおりMailというGemを使うのが楽です。
自分で作るのも、面倒なだけで難しくは無いです。

投稿2019/08/14 12:18

otn

総合スコア84538

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

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

kazuyakazuya

2019/08/14 12:28

ありがとうございます。
guest

0

ベストアンサー

ちょっと意図が読みづらいですが、両方書いておきます。
※ FileをOpenしようとしているので前者ではないと思っていますが、タイトルは前者なので判断が難しいです

ダウンロードリンクを貼りたい場合

ここにダウンロードリンクを貼りたい と書いてあるところにダウンロード用のURLを書けば良いです。

ファイルをメールに添付したい場合

Mailライブラリを使うことをまず検討すると良いと思います。
以下の記事が参考になるかと思います。
第7回 RubyでのメールはMailライブラリにおまかせ!

投稿2019/08/14 11:44

mokemokechicken

総合スコア948

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

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

kazuyakazuya

2019/08/14 12:02

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問