2017-10-10 11 views
0

私はhtmlを取得しようとしていて、文字列のひげコードを翻訳して複数のユーザーに電子メールで送信しようとしています。電子メールはQuartzによってスケジュールされ、ユーザーに送信されます。剃刀htmlからクォーツを使用した文字列

メールは@Url.Actionでリンクを生成しています。アプリケーションのこの時点で私にControllerHttpContextもないことがわかりました。私は@Url.Actionを翻訳することはできませんし、Visual Studioのために働いパッケージMvcMailerを見つけることができないので、私は2017

は 文字列に razorコード( RazorEngineMvcMailer)を変換する方法をしようとし、電子メールで、ない使用して送信されています

可能な方法はありますか?ここで

は、電子メールのテンプレートです:

Hi @ViewBag.RecipientName, 

Client that buy this item is @Model.ClientName 
<p> <a href='@Url.Action("Index", "Item", new { ItemId = Model.ItemId}, Request.Url.Scheme)'>Click here to check the Item</a> </p> 

@ViewBag.RecipientEmailAddress 

ここでは、電子メール・ジェネレータ

public MailMessage GetMessage(EmailModel notification) 
{ 

    string BodyTemplate = ReplaceEmailBody(notification); 

    return new MailMessage 
    { 
     To = { "[email protected]" }, 
     Subject = DateTime.Now.ToString(), 
     IsBodyHtml = true, 
     Body = BodyTemplate 
    }; 
} 

はここでかみそりを置き換えるために、私のゴミの試みです:

private string ReplaceEmailBody(EmailModel notification) 
    { 
     string notificationBody = ""; 

     notificationBody = Templates.Resources.MailTemplate; 

     notificationBody = notificationBody.Replace("@ViewBag.RecipientName", notification.RecipientName); 
     notificationBody = notificationBody.Replace("@ViewBag.RecipientEmailAddress", notification.RecipientEmailAddress); 
     notificationBody = notificationBody.Replace("@Model.CLIENT_NAME", notification.ClientName); 

     //Need to replace the Url.Action 
    } 

このすべてコードが実行ジョブで実行されていますQuartz

私は、Visual Studio

+1

あなたはかみそりの電子メールを生成する(そして最終的にそれを送信)するために呼び出されます、あなたの水晶サービスへのURL(MVCコントローラのアクション)を提供することができます。 –

+0

@StanislavNedeljkovicそしてどうしたらいいですか? – Ragmar

+1

urlが静的でconfigファイルに置かれている場合、動的であればjob paramとして送信します。 –

答えて

0

@Stanislav Nedeljkovicが示唆したように2017を使用しています、私はそれでHttpContextを設定ファイルにURLを入れて作成するために管理します。その後、私は残りをRazorEngineと翻訳することができました。

 var request = new HttpRequest("/", ConfigFile.Url, ""); 
     var response = new HttpResponse(new StringWriter()); 
     httpContext = new HttpContext(request, response); 


     var httpContextBase = new HttpContextWrapper(httpContext); 
     var routeData = new RouteData(); 
     var requestContext = new RequestContext(httpContextBase, routeData); 

     var urlHelper = new UrlHelper(requestContext); 
     var url = urlHelper.Action("Index", "Item", new { ItemId = model.itemId}); 
関連する問題