Nếu bạn đọc qua tài liệu cho Mail
hơn nữa, bạn sẽ tìm thấy giải pháp thay thế tốt đẹp sẽ hoạt động. Thay vì sử dụng:
Mail.deliver do
to @recipient # throws error as this is undefined
from '[email protected]'
subject 'testing sendmail'
body 'testing sendmail'
end
bạn có thể sử dụng phương pháp new()
Mail, đi qua trong các thông số, và bỏ qua những khối:
Mail.new(
to: @recipient,
from: '[email protected]',
subject: 'testing sendmail',
body: 'testing sendmail'
).deliver!
hoặc các định nghĩa yếu tố băm thay thế:
Mail.new(
:to => @recipient,
:from => '[email protected]',
:subject => 'testing sendmail',
:body => 'testing sendmail'
).deliver!
Trong tọc mạch hoặc irb bạn sẽ thấy:
pry(main)> Mail.new(
pry(main)* to: '[email protected]',
pry(main)* from: '[email protected]' << `hostname`.strip,
pry(main)* subject: 'test mail gem',
pry(main)* body: 'this is only a test'
pry(main)*).deliver!
=> #<Mail::Message:59273220, Multipart: false, Headers: <Date: Fri, 28 Oct 2011 09:01:14 -0700>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: test mail gem>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>>
Phương thức new
có một số biến thể bạn có thể sử dụng. Đây cũng là tài liệu và có thể hoạt động tốt hơn:
Lưu ý rằng bạn cũng có thể tạo email mới thông qua tạo thư :: Đối tượng tin nhắn trực tiếp rồi chuyển giá trị qua chuỗi, ký hiệu hoặc trực tiếp các cuộc gọi phương thức. Xem thư :: Tin nhắn để biết thêm thông tin.
mail = Mail.new
mail.to = '[email protected]'
mail[:from] = '[email protected]'
mail['subject'] = 'This is an email'
mail.body = 'This is the body'
Tiếp theo mail.deliver!
.
Cũng lưu ý, trong ví dụ trước, có nhiều cách để truy cập vào các tiêu đề khác nhau trong phong bì thư. Đó là một viên ngọc linh hoạt dường như được suy nghĩ tốt và độc đáo theo cách Ruby.
Bạn có chắc chắn rằng vấn đề của bạn là với cá thể var, chứ không phải với 'params [: email]'? Bạn đã thử xuất nó chưa? Ngoài ra, một biến cục bộ phải đủ ở đây, vì khối đó là một đóng cửa. –