2012-11-22 22 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.

Các vấn đề liên quan