From: Taiki Kimura Date: 2013-11-12T19:56:51+09:00 Subject: [ruby-list:49664] Re: net/smtp sslでのwhileループメール送信 下田さん 具体的なコードを書いていただきありがとうございます! 基本的なことがまだまだ全然理解できていないので、 まずはご教示いただいたコードを読み解きその次に実際のメール送信に進んでみたいと思います。 > 送信先をヒアドキュメントにしましたが > ファイルへの応用も頑張ってください。 はい。がんばりますw 1点、ちょっとだけ確認させていただきたいのですが、 > # fromとtoからメッセージ本文を作って返す > def msg(from, to) > return < From: #{from} > To: #{to} > Subject: SES-Testmail > Date: #{Time.now.to_s} > > テストメール > > EOF > end > > # to_listの各行を処理 > to_list.lines do |to| > # 簡略化のため表示のみ > puts msg(from, to) > end 実際にメールを送信するとなると、 上記のような定義と以下のようなメール送信処理を組み合わせると思うのですが、 ---------------------------------------------- smtp = Net::SMTP.new(HOST, PORT) smtp.enable_ssl smtp.start(HELO, ACCESS_KEY, SECRET_KEY, :plain) {|smtp| smtp.send_message mailbody, from, to_addr } ---------------------------------------------- この時、 ・msgというメソッドをsmtp.send_messagからメールの本文として呼び出す? ・to_listのヒアドキュメントから宛先アドレスを1行ずつ読み込んでsmtp.send_messagにセットする? という処理を行う必要があるということですよね? で、その場合、smtp.send_messagの後に、 ただ単に「msg」とメソッド名を書いてもメール本文にはならず、 また、tsmtp.send_messagの後にto_list.linesと指定するのも絶対に違うと思うのですが、 違うと予想はついても、そこから具体的なコードをイメージするような知識と経験がまだないので、 厚かましいようで大変恐縮なのですが、この点についても何かしらヒントを貰えると大変助かります。。。 以上、よろしくお願いします。 > > (2013/11/12 13:10), Taiki Kimura wrote: >> while to = input.gets >> msg =< ・・・ >> smtp = Net::SMTP.new(HOST, PORT) > ・・・ >> end > > whileでヒアドキュメント定義したり > メール送信する処理などが混在してるのは > 良くないですね。 > > 定義と処理を分けて > do〜endは最小限にしましょう。 > > > -- > > begin > Name: 下田 純也 (Jun'ya Shimoda) > A A e-mail: junshimo2@gmail.com > (o'.'o) _/ Twitter: http://twitter.com/JironBach/ > (> ~ <)/ Facebook: http://www.facebook.com/junya.shimoda > Github: https://github.com/JironBach > rescue > CrowdWorks: https://crowdworks.jp/public/employees/57377 > ensure > Blog: http://d.hatena.ne.jp/JironBach/ > end