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

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

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

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

Q&A

解決済

2回答

1111閲覧

Ruby (htmlメール)をnet/smtp mailで送りたい

kazuyakazuya

総合スコア193

Ruby

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

0グッド

1クリップ

投稿2019/08/16 03:31

編集2019/08/16 12:27

前回の質問
Rubyのmailを使ってファイルの添付をすることができました。
使ったコード

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 10 add_file(filename: "bbb.png", content: File.binread('./bbb.png')) 11 add_file(filename: "sample.rb", content: File.binread('./sample.rb')) 12end 13 14 15a = Net::SMTP.new("smtp.sendgrid.net", 587) 16a.enable_starttls 17a.start('localhost') do |smtp| 18 smtp.authenticate("id","password") 19 smtp.send_message(mail.to_s, "送信元", "送信先") 20end 21

bbb.png sample.rbの2つのファイルを添付させています。以下送られてきたファイル
イメージ説明
(手動でやらないと画像を開けない・・・)
ただ、自分が想像していたのは
イメージ説明
上記のような感じのものです。

調べていくとHTMLメールというみたいですが

Ruby の mailでHTMLメール作成は可能なのでしょうか?

google

1Ruby mail HTMLメール

のようなワードで調べているのですが
出てくるのがRailsや関係ないものばかりで。。。

RubyのmailでHTMLメールを送ることはできないのでしょうか?
わからないので参考になるリンクまたは説明をお願いします。

require "net/smtp"
require "mail"

追記
回答でいただいた方法でHTMLメールを作成できました。

ruby

1 2mail = Mail.new do 3 to 'nicolas@test.lindsaar.net.au' 4 from 'Mikel Lindsaar <mikel@test.lindsaar.net.au>' 5 subject 'First multipart email sent with Mail' 6 html_part do 7 content_type 'text/html; charset=UTF-8' 8 body '<h1>Funky Title</h1><p>Here is the attachment you wanted</p> 9 <a href="teratail.com">This is sample links</a> 10 <img src="https://s.yimg.jp/images/ks/official/nt/grd/prf_48.png"> 11 ' 12 end 13end 14 15a = Net::SMTP.new("smtp.sendgrid.net", 587) 16a.enable_starttls 17a.start('localhost') do |smtp| 18 smtp.authenticate("id","password") 19 smtp.send_message(mail.to_s, "送信元", "送信先") 20end

ただ、URLをタッチしても飛ばされず
画像も表示されません。
イメージ説明
イメージ説明

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

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

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

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

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

guest

回答2

0

ただ、URLをタッチしても飛ばされず

HTMLのaタグの書き方を学びましょう。

画像も表示されません。

その上の、「外部の~~しますか?」のボタンは押していますか?

投稿2019/08/16 12:10

otn

総合スコア84505

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

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

kazuyakazuya

2019/08/16 12:18

ありがとうございます。 aタグに関してはドメインしか書いてありませんでした・・・ (imgに関してはよく見ると後ろにpngがありました。それが原因のようでした。) 最後にお願いします。 aタグでリンクを張れるように タッチするだけでファイルをダウンロードしたりするのはできないのでしょうか?
otn

2019/08/16 12:20

ファイルのURLをaタグに書けば良いのでは?
kazuyakazuya

2019/08/16 12:31

画像を追記しました。 同じフォルダー(ruby_lesson)の中に 実行してメールを送るプログラムsample.rbファイルがあります。 同じファイル内にある bbb.png(写真)をsample.rbで送る(htmlメールで) ということです。 URLではなくローカルのファイルとして(?)指定したいです。
otn

2019/08/16 13:38

添付すれば良いのでは?
kazuyakazuya

2019/08/17 03:09

HTMLメールの枠組みの中に aタグのような タッチすれば勝手にダウンロードできるものをつけたいということです。 それをURL以外で指定する方法はあるのかという 意味です。 add_fileでも一応添付はできるが それをHTMLメールの中に組み込みたいということです。
kazuyakazuya

2019/08/17 07:58

失礼しました。 スマホのメールでファイルの添付を確認した時には だめでしたが パソコンのメールで受け取ったところおもうように 表示されていました。 今回もありがとうございました。
guest

0

ベストアンサー

require mailで読み込んでいるのははmikel/mailでしょうか?

でしたら、README.mdの下記の部分にHTMLメールでファイルを送信するサンプルが書いてあります。
これをちょっと書き換えたらいけそうな。。(動作確認はしてないです。)
https://github.com/mikel/mail#attaching-and-detaching-files

rb

1mail = Mail.new do 2 to 'nicolas@test.lindsaar.net.au' 3 from 'Mikel Lindsaar <mikel@test.lindsaar.net.au>' 4 subject 'First multipart email sent with Mail' 5 6 text_part do 7 body 'Here is the attachment you wanted' 8 end 9 10 html_part do 11 content_type 'text/html; charset=UTF-8' 12 body '<h1>Funky Title</h1><p>Here is the attachment you wanted</p>' 13 end 14 15 add_file '/path/to/myfile.pdf' 16end

投稿2019/08/16 03:44

KaiShoya

総合スコア551

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

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

kazuyakazuya

2019/08/16 03:57

ありがとうございます。 追記しておきます。 コメントでいただいたコードで HTMLメールは書けたのですが 画像をimg(urlで指定)しても画像が表示させません。 (aタグも書いたのですがURL先へ飛ばされない・・・) できればお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問