2017-05-10 41 views
1

我有一個ASP.NET MVC Web應用程序想要發送電子郵件給不同的用戶。目標是在我的MVC應用程序中有一個可重用的API,可以從不同視圖發送單個/批量電子郵件。驗證Office 365 API並從ASP.NET MVC應用程序發送電子郵件

我的想法是創建一個自定義Web API,我的MVC應用程序可以調用它來使用Office 365 API發送電子郵件。現在假設我們有2個項目:

  1. MVC Web應用程序 - >這包含一個網頁,喜歡的用戶界面領域,從,身體,發送按鈕等
  2. MVC的Web API - >這包含到Office引用365庫和端點發送電子郵件

此場景是否會發送電子郵件,因爲我不希望用戶被重定向到其各自的登錄頁面並輸入其Office 365憑據。我想知道是否可以撥打一些Office 365 API端點並將它們傳遞給一個電子郵件地址,如[email protected],它會向我發送一個可用於發送電子郵件的身份驗證令牌。

糾正我,如果我錯了或任何人有更好的主意?

------- UPDATE ON 2017年5月17日-------

對不起難遇的回覆晚了。我有點忙於其他優先事項,所以沒有機會查看代碼示例的更多細節。我感謝你的建議,但在這一點上,我還有其他優先工作要做。我不知道如何才能對AD進行認證,因爲我們有不同的架構。想象一下,我們有5家公司使用我們的Web應用程序。所有5家公司都有自己的Office 365帳戶和AD。我們使用我們的SQL數據庫進行身份驗證,然後像大多數Web應用程序一樣訪問我們的Web應用程序,但由於它們不屬於我們的AD網絡,因此我們無法對它們的AD進行身份驗證。

回答

0

如果您希望用戶在MVC應用中使用Azure AD進行身份驗證(用戶使用其憑據登錄),則在mvc應用程序中調用Web API,然後Web API在獲取令牌後執行代碼以調用O365 rest apis原始用戶。您可以使用OAuth 2.0 On-Behalf-Of流。有關協議如何工作的更多信息,請參閱this documentthis code sample

如果您想使用其應用程序標識(而不是用戶標識)來訪問Web API中的Office 365庫以獲取訪問令牌,而無需人工交互(例如交互式登錄對話框),則可以嘗試使用OAuth 2.0客戶端證書。請參閱this document,並且您可能會在here(服務器或守護進程應用程序到Web API部分)中關聯代碼示例。

更新:

你可以1)使用asp.net的身份,使蔚藍的廣告外部登錄,然後在網頁API,你可以通過使用OAuth 2.0,代其發送郵件代表原始用戶流量。

2)取得令牌的客戶端憑證流入網頁API:

POST https://login.microsoftonline.com/<tenant>/oauth2/token 
Content-Type: application/x-www-form-urlencoded 

client_id=<clientid>&resource=https://graph.microsoft.com/&client_secret= 
<client secret>&grant_type=client_credentials 

然後使用訪問令牌(應用的身份),你可以通過發送郵件:

POST https://graph.microsoft.com/v1.0/users/<userPrincipalName>/sendMail 
Content-type: application/json 
Authorization : Bearer token 

{ 
    "message": { 
    "subject": "Meet for lunch?", 
    "body": { 
     "contentType": "Text", 
     "content": "The new cafeteria is open." 
    }, 
    "toRecipients": [ 
     { 
     "emailAddress": { 
      "address": "[email protected]" 
     } 
     } 
    ], 
    }, 
    "saveToSentItems": "true" 
} 

您可以傳遞的UserPrincipalName從MVC。您應授予Send mail as any usermicrosoft graph的應用權限,以便在azure門戶中爲您的web api應用程序。

+0

感謝您的建議。我的MVC網絡應用程序當前使用ASP.NET身份驗證用戶對我的SQL數據庫。這會干擾我進行任何AD身份驗證嗎?我真的想使用Office 365進行電子郵件通信。因此,一旦用戶登錄到我的MVC應用程序,它就會讓用戶從[email protected]發送電子郵件到[email protected],而不需要任何登錄信息。你的soln-2會在這種情況下工作嗎? – user2272865

+0

@ user2272865,請檢查我的更新答案。 –

+0

任何更新,請讓我知道它是否有幫助。 –

相關問題