From: Jun'ya Shimoda Date: 2013-11-18T19:10:34+09:00 Subject: [ruby-list:49681] Re: net/smtp sslでのwhileループメール送信 下田です。 取り敢えず構文と過ちの推測に間違いが多すぎて どこから指摘すればいいのか分からないです。 まずメールの送信のテストについてですが toがきちんと決められないのに 実際に送ってはいけません。 本文とtoに間違いがなくて 送る予定の前日に最終テストしようとして 間違って送ってしまったとかなら お詫びのメールで済むでしょうけど toが間違ってたらお詫びのメールでは済みません。 > で、その際のメール本文とメールヘッダを作るメソッドを次のように定義して いるのですが、 > > ------------------------------------------------------------ > def sendmail(from, to , subject, body) > body = < From: #{from} > To: #{to} > Subject: #{NKF.nkf("-WMm0j", subject)} > Date: #{Time.now.rfc2822} > Mime-Version: 1.0 > Content-Type: text/plain; charset=ISO-2022-JP > Content-Transfer-Encoding: 7bit > > #{body} > EOF > ------------------------------------------------------------ これだとbodyをsendmailの外から与えつつ sendmailの中でも再度定義していることになります。 bodyをsendmailの外で決めるのか中で決めるのかを まず決めましょう。 多分外で「変数として定義する」のがいいです。 > ------------------------------------------------------------ > sendmail("hoge@aaa.net", "fuga@net", "めーるてすと", < > 日本語メールテスト > > EOF > ------------------------------------------------------------ こんな書き方ができるんですか・・・ ヒアドキュメントは関数の外で「変数として定義」して 関数の中とか(私が12日に例示したのが関数の中でした。あれはダメです。) 関数の引数でいきなり定義するのはやめましょう。 > メール送信処理のときと同じように、data.txtからメールアドレスを読み込んでセットしたいのですが、 > その方法がわからず、困っております。 プログラム全体がわからないのですが to_list.lines do |to| がまだ残ってるならtoを渡せばいいです。 ファイルから一行ずつ読むループになったのなら その内側で渡せばいいです。 -- 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