6

X-SMTPAPI ヘッダーを使用して複数の受信者を指定し、Sendgrid を使用してメールをメーリング リストに送信しています。Sendgridのドキュメントから「行の長さを 72 未満に保つには、ヘッダーをラップする必要があります。」

ActionMailer を使用して電子メールを送信し、メソッドを使用して X-SMTPAPI ヘッダーを設定していheadersます。行を 72 文字未満に保つために、各コンマをコンマ + 改行 + スペースに置き換えてみました。例えば、

headers["X-SMTPAPI"] = {
        :to => ['user1@example.com','user2@example.com','user3@example.com','user4@example.com','user5@example.com','user6@example.com']
}.to_json.gsub(',',",\n ")

ヘッダーに改行を入れる代わりに、(ログ ファイルから) 以下を取得しています。

X-SMTPAPI: {"to":["user1@example.com",=0A "user2@example.com",=0A "user3@example.com",=0A "user4@example.com",=0A "user5@example.com",=0A "user6@example.com"]}

\n 文字が に置き換えられていることに注意してください=0A。このシーケンスは、Sendgrid サーバーによって無効として拒否されます。

ヘッダーに適切な改行を入れるために私ができることはありますか?

編集:ヘッダーに何が設定されているかを確認するために、「ヘッダーを配置」を追加してみました。それから私が見つけたのは

Date: Sat, 13 Apr 2013 18:21:36 -0400
Message-ID: <5169da701cd26_5343fe1776afc50749b4@saunders.mail>
Mime-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-SMTPAPI: {"to":["user1@example.com",=0A "user2@example.com",=0A
 "user3@example.com",=0A "user4@example.com",=0A "user5@example.com",=0A
 "user6@example.com"]}

追加している改行がまだ「= 0A」として表示されていることに注意してください。しかし、何かが独自にラッピングを追加しているようです。この折り返しは自動で、ヘッダー行の長さが要件を超えないようにするのに十分ですか?

4

2 に答える 2

6

ActionMailer は、適切なスペースを与えれば、行の折り畳みとエンコードを実際に処理します。JSON.generate間隔を与えるために使用する必要があります。

元。

headers["X-SMTPAPI"] = JSON.generate({
  :category => "welcome_email",
  :to => ['user1@example.com','user2@example.com','user3@example.com','user4@example.com','user5@example.com','user6@example.com']
}, :indent => ' ')

その結果、次のようになります。

X-SMTPAPI: { "category":"welcome_email", "to":[  "user1@example.com",
 "user2@example.com",  "user3@example.com",  "user4@example.com",  
 "user5@example.com",     "user6@example.com"]}

ご覧のとおり、ActionMailer が空白に遭遇すると、それはあなたのために何かをラップします - いつもの\r\n.

于 2013-04-14T23:56:27.613 に答える