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

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

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

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

0回答

2196閲覧

Railsで自動送信メールにpdfファイルを添付したい

s_diff

総合スコア107

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2018/06/14 01:26

編集2018/06/15 05:30

前提・実現したいこと

Railsでメール機能をつくっています。
CarrierWaveを利用してs3にpdfファイルをアップロードしてからUserMailerでそのpdfファイルをひっぱってきてメールに添付する、ということをしようとしているのですが、下記のような実装をしてもuploads配下にdecision_fileディレクトリが作成されず、またメールが送信されません

該当のソースコード

#user_controller.rb def mail    @user = User.find_by(id: params[:id]) @d = DecisionFile.create(file: params[:file], text: params[:text], email: @user.email, user_name: @user.name) UserMailer.inform_sign_up_to_user(@d).deliver_later redirect_to edit_mail_manage_user_path, notice: '登録情報の通知メールをユーザーに送信しました。' end #decision_file.rb class DecisionFile < ActiveRecord::Base mount_uploader :file, MailAttachmentUploader end #mail_attachment_uploader.rb class MailAttachmentUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def extension_white_list %W[pdf] end def filename name = "#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf" name.downcase end end #user_mailer class UserMailer < ApplicationMailer default from: "info@mycompany.co.jp"#送信元のメールアドレス設定 def inform_sign_up_to_user(d) @d = d attachments['mycompany-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf") mail( subject: Settings.application_name + "お申込みいただきありがとうございます", #メールのタイトル, to: @d.email #宛先 ) end end #rails c pry(main)> DecisionFile.last DecisionFile Load (0.2ms) SELECT `decision_files`.* FROM `decision_files` ORDER BY `decision_files`.`id` DESC LIMIT 1 #<DecisionFile:0x007fe5a75c9ab0> { :id => 45, :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>, :text => "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n URL -\r\n https://〜.com", :email => "test65@gmail.com", :user_name => "test65", :created_at => Thu, 14 Jun 2018 09:35:51 JST +09:00, :updated_at => Thu, 14 Jun 2018 09:35:51 JST +09:00

試したこと

rails c で DecisionFile.last と打つと、
:file => の @model=内でファイル名が変換されていて、@file= で保存先も正しく表記されています。
ですが実際には public/uploads配下にdicision_fileディレクトリは作成されていません。

補足情報

メール送信でsidekiqをつかっています。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問