2012-11-22 5 views
10

Ruby On Railsアプリケーションと電子メールを購読しています。 - 一部のユーザーが持つ電子メールアドレスを持っている「 - 」で始まる一つのことを除いて、[OK]を" - "(ダッシュ)で始まる電子メールのトラブル

class UserMailer < ActionMailer::Base 
... 
end 

すべて:それはactionmailerのから継承されたメーラーのクラスを持っています。 私は「[email protected]」に電子メールを送信しようとしているときにエラーが発生します。

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

をどのように私はactionmailerのために、この文字(そしておそらくいくつかの類似した)を逃れるだろうか?非推奨はあなたのような危険な何マークすることができます第二引数を取るんが

おかげ

+0

すべてのbash/shellコマンドのオプション文字が – toxicate20

+2

であるため、この特殊文字をエスケープする必要があります。多くのunixコマンドは '--'引数の後でパラメータの解析を停止します。おそらくあなたはそれを行うためにsendmailの呼び出しコードを再設定できますか? – samuil

+0

アドバイスをいただきありがとうございます。私はいくつかのエスケープを追加しようとしました: - '\'と '' 'または' ''を追加することは役に立たない( "\" - [email protected] \ ""、 "\ -user @ mailinator。 " - \ '[email protected] \" "が送信されましたが、" [email protected] "の受信箱は空のままです) - '/'を追加すると予期しないことに役立ちます。 また、アプリケーションでsendmailのメソッドをオーバーライドしようとしています。 – vld

答えて

0

URI.escape方法はURI.escapeを置き換えるCGIエスケープは持っていないようですので、

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

同じ機能ですが、このような単一のケースではうまくいく可能性があります。

関連する問題