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

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

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

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

Q&A

解決済

1回答

1630閲覧

Ruby mail ファイル添付させたい

kazuyakazuya

総合スコア193

Ruby

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

0グッド

0クリップ

投稿2019/08/15 11:39

編集2019/08/15 13:17

Rubyのmailでメールを送り
その内容の中にファイルを添付させたいです。

ruby

1require 'net/smtp' 2require 'mail' 3 4a = Net::SMTP.new("smtp.sendgrid.net", 587) 5a.enable_starttls 6a.start('localhost'){|smtp| 7 smtp.authenticate("id","password") 8 smtp.send_message(<<-EndOfMail, '送信元', '送信先') 9 From: Your Name <from@example.com> 10 To: Dest Address <to@example.net> 11 Subject: test mail 12 Date: Sat, 23 Jun 2019 18:20:50 +0900 13 Message-Id: <unique.message.id.string@yourhost.example.com> 14 15  ここにファイルを添付させるコードを記入 16 This is a test mail. 17 EndOfMail 18 19 20 }

いろいろ試したのですがだめでした。
どこらへんに誤りがあるのかが分からないのでお願いします。

参考記事
イメージ説明
これを参考にして以下のコードを追記しました。

ruby

1require 'net/smtp' 2require 'mail' 3 4a = Net::SMTP.new("smtp.sendgrid.net", 587) 5a.enable_starttls 6a.start('localhost'){|smtp| 7 smtp.authenticate("id","password") 8 smtp.send_message(<<-EndOfMail, '送信元', '送信先') 9 From: Your Name <from@example.com> 10 To: Dest Address <to@example.net> 11 Subject: test mail 12 Date: Sat, 23 Jun 2019 18:20:50 +0900 13 Message-Id: <unique.message.id.string@yourhost.example.com> 14 15  ここにファイルを添付させるコードを記入 16#{mail = Mail.new do add_file "./aaa.jpg" end} 17 This is a test mail. 18 EndOfMail 19 20 21 } 22

aaa.jpgを添付しています。以下ファイル構成(実行するのはsample.rb)
イメージ説明
プログラムを実行すると・・・
以下のようなメールが送られてきます。
イメージ説明

これは正常に動いているのでしょうか?
(添付=青いリンクだけが表示されタッチするとダウンロードできる。
ようなものをイメージしていたのですが・・・)
こちらの記事にも似たようなものが
ありましたが・・・
イメージ説明
原因がわかりません。
参考になるリンクまたは説明をお願いします。

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

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

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

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

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

scsi

2019/08/15 12:27

優しいので修正依頼しますね。実際に sendgrid に認証可能なユーザIDとパスワードが書いてありますよ。このままでは誰かに無制限にメール送られますので、即刻パスワードを変更したほうがいいですよ。
kazuyakazuya

2019/08/15 12:28

気づきませんでした! ありがとうございます。
scsi

2019/08/15 12:30

掲載文もそうですが、sendgrid 側の設定も変更するべきです。私はもうパスワード知ってますから。
guest

回答1

0

ベストアンサー

冒頭のコードは前回の質問のコードですよね?
mail gem を使ったのであれば、そのコードを書きましょう。

(添付=青いリンクだけが表示されタッチするとダウンロードできる。ようなものをイメージしていたのですが・・・)

違います。添付ファイルのあるメールを受け取ったこと・送ったことが無いと言うことでしょうか?
まず、普通のメールソフトで、自分宛に添付ファイル付きメールを送って、受信してみましょう。

ファイル添付のメールというのは、メール本文とファイルを一緒にした1つのメールを送ると言うことです。つまり、メールを受信した段階でファイルは受信済みです。クリックしてダウンロードするのでは無いです。

#追記
mail gemの使い方。自分でnet/smtpでメールする場合。

Ruby

1require "net/smtp" 2require "mail" 3 4mail = Mail.new do 5 from "Your Name <from@example.com>" 6 to "Dest Address <to@example.net>" 7 subject "test mail" 8 body "This is a test mail." 9 add_file "./aaa.jpg" 10end 11 12a = Net::SMTP.new("smtp.sendgrid.net", 587) 13a.enable_starttls 14a.start('localhost') do |smtp| 15 smtp.authenticate("id","password") 16 smtp.send_message(mail.to_s, "送信元", "送信先") 17end

投稿2019/08/15 12:41

編集2019/08/15 15:32
otn

総合スコア84499

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

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

kazuyakazuya

2019/08/15 12:43

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

2019/08/15 13:16

不明点があるのでお願いします。 実際に送ってみたのですが(今回送ったのは写真) メールソフトで送った場合 >受信メールには写真が表示されました。 質問内容のサンプルコードでも送ったのですが その結果というのは 質問内容文に記載されている受信メールの写真です。。。 文字列が入っているファイルをダウンロードしたい (という概念そもそもが間違っていましたが、一応今回は写真なので) この原因はコードそもそもにあると思うのですが その原因というのが分からないのです。
otn

2019/08/15 13:29

根本的にmail gemの使い方を間違っています。 サンプルもあるので、それに習ってください。 回答に追記しておきます。
kazuyakazuya

2019/08/16 01:15

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問