2011-12-15 4 views
1

私はPony gemを使用してメールを送信しています。私に両方のオプションが公開されていると仮定すると、smtpまたは:sendmailを使用することにメリットがありますか?メモリ使用量を最小限に抑えるために、Ponyの:sendmailまたは:smtpモードを選択する必要がありますか?

オプション1:SMTP

ここでは、RubyはSMTPサーバに直接接続します。

Pony.mail(
    :to => '[email protected]', 
    :via => :smtp, 
    :via_options => { 
    :address  => 'smtp.yourserver.com', 
    :port   => '25', 
    :user_name  => 'user', 
    :password  => 'password', 
    :authentication => :plain, # :plain, :login, :cram_md5, no auth by default 
    :domain   => "localhost.localdomain" # the HELO domain provided by the client to the server 
    }) 

オプション2:sendmailはここ

、ローカルsendmailバイナリが生み出されます。特に

Pony.mail(
    :to => '[email protected]', 
    :via => :sendmail, 
    :via_options => { 
    :location => '/path/to/sendmail', 
    :arguments => '-t' 
    }) 

、私はそれを取り付ける前に、メモリにファイルの内容全体を読み込む心配です - が、これは、両方のモードに必要であると考えられる:

Pony.mail([...], :attachments => {"foo.zip" => File.read("path/to/foo.zip")}) 

これは似ていますSendmail vs SMTPにありますが、それらの回答は私の質問には当てはまりません。

答えて

1

私はポニーの宝石を維持します。

あなたはメールで送信しているファイルがどのくらいありますか?私は、転送方法間でメモリ使用量に大きな違いが生じるとは思わない。

あなたは、大きなファイルを送信する必要がある場合、私は、一般的に、SMTP経由で大きなファイルを送信していない、別の転送方法を使用します。

また、直接メールライブラリを使用して試みることができる:

https://github.com/mikel/mail

それはあなたに大きなファイルのためのより良い性能を与えることができます。

問題が解決しない場合は、あなたがUUENCODEを呼び出し、メールに出力をパイプに頼るする必要があります(つまり、uuencodeをFILE.DAT |メール[email protected]

+0

私はこれが今古い議論ですけどしかし、私はあなたがこれに答えることを望んだ - ポニーは、すべての電子メールが送信された後に(:smtpメソッドを使用すると)SMTP接続を閉じますか?私は毎晩、約5万通の電子メールを送信するcronの仕事でそれを使用したいと思います。私たちが手に入れることができるすべてのパフォーマンスを確実に利用したいと思います。 – dimitarvp

1

まず、Ponyのデフォルトはsendmailなので、私はあなたがsmtpが必要であることを知るまで推測しています(これはsendmailがないマシンでのみ起こります。デフォルト。別のノートで

:あなたは、システムの負荷が心配するので、私はまた、sendmailをお勧めします。これはあなたがruby/railsアプリケーションでsendmailにシステム負荷(添付ファイル)を送信するためです。これはおそらくsmtp自体を実行しているRubyよりも速すぎるメモリ負荷の問題を解決します。

しかし、正直に言うと、私は両方とも直接添付ファイルを受信するので賢明バージョンメモリ負荷の両方の間にあまり差がないと思います。あなたは電子メールについて話しているので、私はあなたが数百メガバイトのファイルについて話しているとは思いませんか?

関連する問題