1

Pony gemを使用してメールを送信しています。両方のオプションが開かれていると仮定すると、:smtp または :sendmail を使用することにメモリ上の利点はありますか?

オプション 1: smtp

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

Pony.mail(
  :to => 'you@example.com',
  :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 => 'you@example.com',
  :via => :sendmail,
  :via_options => {
    :location  => '/path/to/sendmail',
    :arguments => '-t'
  })

特に、ファイルを添付する前にファイルの内容全体をメモリにロードすることを懸念していますが、これは両方のモードで必要なようです:

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

これはSendmail vs SMTPに似ていますが、これらの回答は私の質問をカバーしていません。

4

2 に答える 2

1

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

メールで送信するファイルのサイズはどれくらいですか?トランスポート方法間でメモリ使用量に大きな違いはないと思います。

大きなファイルを送信する必要がある場合は、別の転送方法を使用します。通常、SMTP経由で大きなファイルを送信することはありません。

メールライブラリを直接使用することもできます。

https://github.com/mikel/mail

大きなファイルのパフォーマンスが向上する場合があります。

それでも問題が解決しない場合は、uuencodeを呼び出して、出力をメールにパイプする必要があります(つまり、uuencode file.dat | mail foo@bar.com)

于 2011-12-16T18:54:26.743 に答える
1

まず第一に、Pony はデフォルトで sendmail を使用するので、smtp が必要であることがわかるまで推測します (これは sendmail のないマシンの場合のみであり、これもポニー自体によって決定されます)。

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

しかし、正直なところ、どちらも添付ファイルを直接受け取るため、両方のバージョンのメモリ ロードに大きな違いがあるとは思いません。あなたは電子メールについて話しているので、数百メガバイトのファイルについて話しているとは思いませんよね?

于 2011-12-15T09:38:06.580 に答える