2011-07-19 11 views
2

Orchard CMSで作成したモジュールでMvcMailerを使用していますが、電子メールを送信することはできますが、電子メールの本文は空です。 Orchardが "/[Module]/Views/[NameOfMailerFolder/_Layout.cshtml"または ".../[NameofMailerView] .cshtml"をピックアップしていないと考えてください。メッセージの本文がありません(MvcMailer +オーチャードCMS)

最初に、「/ [Module]/Views/[NameOfMailerFolder]」を「/ ThemeBeingUsed/Views」フォルダまたはOrchard.Webの「/ Views」フォルダに移動すると、パスを見つけるだけではないと思った)。しかし、運がない。

私のモジュールでroute.csを使いこなそうとしましたが、CONTROLLERとACTIONを空のままにして( "")、 "/ [Module]/Views/[NameOfMailerFolder ] "そこにしかない。いずれにせよ、私は "[NameOfMailerView] .cshtml"のルートを作成しましたが、それはどちらもうまくいきませんでした。私はこれが正しい方法であるかどうか疑問に思っています(私はコントローラーでアクションを設定しませんでしたが、そうすることを考えています - リダイレクトする必要があります)。

私は少し失われているので、私はどのような指針に感謝します。

+0

私はあなたにシェイプを解析させて、結果として得られるHTMLをメールで送ることができるいくつかのコードを提供できます。 – Brendan

答えて

3

Mailerコードでは、Orchard CMSの処理方法に問題が発生するように見えるMasterNameが使用されています。

これは、それが(1.3またはOrchard.Webを使用して)私のために働い取得するものです:

public QuoteMailers() 
    : base() 
{ 
    //LEAVE OUT FOLLOWING FOR MVC MAILER TO WORK 
    //MasterName = "_Layout"; 
} 

QuoteMailersはちょうど私の名前であるあなたが使用している場合、MvcMailerは、使用するパラメータに基づいて名前を作成します。 VSのパッケージマネージャーコンソール

MasterNameをコメントアウトすると機能します。この「ハック」の唯一の欠点は、共通の_Layoutファイルを使用しないことです。私はPartialsを使うことができるので、それは大したことではありません。