2011-06-19 78 views
1

我有一個非常基本的問題,但解決方案可能有點複雜。發送電子郵件通知的設計問題

  1. 如何是網站開發者發送出的電子郵件,例如忘記密碼鏈接,註冊消息,和/或需要被髮送的任何其他notifictions。
  2. 開發人員將消息存儲在SQL服務器,一個獨立的類,XML?

我使用的是洋蔥模型,而我的SMTP接口在app.core中,但是我發送郵件的基類位於infrastructure.backends中。我不希望我的應用程序服務依賴於後端,不知道這是錯誤還是我正在強迫症。

我正在使用Ninject作爲我的IOC/DI。

+0

讓我澄清一下,我十分精通於該System.Net.Mail命名空間。我的問題更多的是我認爲的建築問題。發送電子郵件很簡單;) – CrazyCoderz

回答

0

從我發現的文章略微修改,這似乎是正確的方式滾動。至少這是一個開始。
public interface IViewMailer string RenderPartialViewToString(string viewName,object model,ControllerContext controllerContext); }

public class ViewMailer : IViewMailer 
{ 
    #region IViewMailer Members 

    public string RenderPartialViewToString(string viewName, object model, ControllerContext controllerContext) 
    { 
     if (string.IsNullOrEmpty(viewName)) 

      viewName = controllerContext.RouteData.GetRequiredString("action"); 
     controllerContext.Controller.ViewData.Model = model; 
     using (var stringWriter = new StringWriter()) 
     { 
      ViewEngineResult viewEngineResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName); 
      var viewContext = new ViewContext(controllerContext, viewEngineResult.View, 
               controllerContext.Controller.ViewData, 
               controllerContext.Controller.TempData, stringWriter); 
      viewEngineResult.View.Render(viewContext, stringWriter); 
      return stringWriter.GetStringBuilder().ToString(); 
     } 
    } 

    #endregion 
} 
0

在c#中System.Net.Mail。我會爲你做大部分事情。

+0

公平地回答這個問題,OP沒有在添加這個答案之前添加關於'System.Net.Mail'的評論。 – RPM1984

+0

我沒有投票給他。我沒有代表:) – CrazyCoderz

+0

哦,它讓我修理亞...先生先生關於任何消極的東西。 – CrazyCoderz

6

使用Postal。我認爲這是開發電子郵件模板最有效的方式。架構可以牢記在心。它允許我們在不重新編譯代碼的情況下更改模板。

根據架構,我沒有真正有任何問題將它作爲我的應用程序服務的一部分。

+0

這看起來很有趣,它使用視圖作爲模板。現在檢查了這一點。 – CrazyCoderz

+0

郵政+ 1 - 我現在使用它,它岩石。很高興在視圖中編寫電子郵件,而不是在字符串中構建HTML。再也不。 – RPM1984

2

如果您要發送html電子郵件,我使用精簡的主/佈局頁面和視圖。然後,我讓控制器將該視圖呈現爲字符串以用於電子郵件中。就像任何其他mvc視圖和模型一樣。

+0

大聲笑。我剛想說完之後,就把這個該死的視圖渲染成一個字符串併發射出去......方式很酷。 – CrazyCoderz