2012-11-22 21 views
10

Chúng tôi có ứng dụng Ruby On Rails với một số đăng ký email. Nó có lớp người gửi thư được kế thừa từ ActionMailer:Rắc rối với các email bắt đầu bằng "-" (dấu gạch ngang)

class UserMailer < ActionMailer::Base 
... 
end 

Mọi thứ ok, ngoại trừ một điều - một số người dùng có địa chỉ email bằng "-" lúc bắt đầu. Nó xảy ra lỗi khi tôi đang cố gắng gửi email để "[email protected]":

sendmail: invalid option -- u 
sendmail: invalid option -- s 
sendmail: invalid option -- u 
sendmail: fatal: usage: sendmail [options] 

Làm thế nào tôi có thể thoát khỏi nhân vật này (và có thể một số tương tự) cho ActionMailer?

Cảm ơn

+0

bạn cần phải thoát khỏi ký tự đặc biệt này vì ký tự tùy chọn trong tất cả lệnh bash/shell – toxicate20

+2

Nhiều lệnh unix ngừng phân tích tham số sau đối số '--'. Có lẽ bạn có thể cấu hình lại mã gọi sendmail để làm điều đó? – samuil

+0

Cảm ơn lời khuyên. Tôi đã thử thêm một số thoát: - thêm '\' và bổ sung '" 'hoặc' ''không giúp (email đến" \ "- [email protected] \" "," \ -user @ mailinator. com "và" - \ '[email protected] \' "đã được gửi, nhưng hộp thư đến tại" [email protected] "vẫn trống) - thêm'/'bất ngờ giúp: gửi email tới"/-user @ mailinator. com "gửi và gửi đến" [email protected] " Ngoài ra tôi sẽ cố gắng ghi đè phương thức sendmail trong ứng dụng – vld

Trả lời

0

Phương pháp URI.escape mặc dù bị phản đối không có một tham số thứ hai cho phép bạn đánh dấu những gì không an toàn như vậy

URI.escape("[email protected]", '-') 
=> "%[email protected]" 

CGI thoát mà thay thế URI.escape dường như không có cùng một chức năng nhưng đối với một trường hợp duy nhất như thế này, nó có thể hoạt động.