2015-06-13 83 views
3

如何配置過去在asp.net 4中的web.config的郵件設置<system.net><mailSettings>?我想我需要撥打services.Configure<>(),但我不知道我應該通過哪些選項。有任何想法嗎?如何在ASP.NET 5中配置電子郵件設置?

感謝, f0rt

+1

不幸的是,SMTP類尚未轉換到.NET 5,但(http://forums.asp.net/t /2037552.aspx?SMTP+in+CoreCLR) - 你可能需要經歷一下在代碼中自己配置'SmtpClient'的痛苦。 –

+0

@MattDeKrey雖然這是真的,但f0rt並未指定他使用核心,並且SMTP類在整個框架中確實存在。 –

回答

3

嘗試這樣的一種方式,以保持你的祕密的祕密。首先,安裝SecretManager並用你的祕密進行配置。當您在本地計算機上時,您需要使用SecretManager中的值。通過您的託管(例如在Azure中),您將使用環境變量。

地方:安裝和配置SecretManager

dnu commands install Microsoft.Extensions.SecretManager 
user-secret set "smtp-host" "smtp-mail.outlook.com" 
user-secret set "smtp-port" "587" 
user-secret set "smtp-username" "myUsername" 
user-secret set "smtp-password" "@#$HFS%#$%SFsd" 

還有,使這個出差錯,如果你已經安裝了2015年VS RC的錯誤。 There's a workaround here.

直播:使用環境變量

下面是在MS Azure中的Web App的例子,但其他網站的主機可能有類似的選項。

Web App > Dashboard > Configure

project.json,我們只針對dnx451

注意。另外,我們有一個userSecretsId

{ 
    "webroot": "wwwroot", 
    "version": "1.0.0-*", 
    "userSecretsId" : "Add-an-arbitrary-user-secrets-id", 

    "dependencies": { 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta4", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta4", 
    "Microsoft.Framework.ConfigurationModel.UserSecrets": "1.0.0-beta4" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000" 
    }, 

    "frameworks": { 
    "dnx451": { } 
    } 

    /* other configuration omitted */ 

} 

Startup.cs

現在你可以在本地訪問這些用戶的祕密,而當使用時的環境變量將覆蓋它們。我剛剛測試了這個最小的項目。有用。

using System; 
using System.Net; 
using System.Net.Mail; 
using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Http; 
using Microsoft.Framework.ConfigurationModel; 

namespace WebApplication1 
{ 
    public class Startup 
    { 
     public Startup() 
     { 
      var configuration = new Configuration(); 

      // the order cascades 
      // e.g. Environmental variables will overwrite the UserSecrets 
      configuration.AddUserSecrets(); 
      configuration.AddEnvironmentVariables(); 

      this.Configuration = configuration; 
     } 

     IConfiguration Configuration { get; set; } 

     public void Configure(IApplicationBuilder app) 
     { 
      var host = this.Configuration.Get("smtp-host"); 
      var port = this.Configuration.Get("smtp-port"); 
      var username = this.Configuration.Get("smtp-username"); 
      var password = this.Configuration.Get("smtp-password"); 

      var from = "[email protected]"; 
      var to = "[email protected]"; 
      var subject = "Dinner on Tues?"; 
      var body = "How about it?"; 
      var mailMessage = new MailMessage(from, to, subject, body); 

      var smtpClient = new SmtpClient(); 
      smtpClient.UseDefaultCredentials = false; 
      smtpClient.Host = host; 
      smtpClient.Port = Int32.Parse(port); 
      smtpClient.Credentials = new NetworkCredential(username, password); 
      smtpClient.EnableSsl = true; 

      app.Run(async (context) => 
      { 
       await context.Response.WriteAsync("Hello SMTP!"); 
       smtpClient.Send(mailMessage); 
      }); 
     } 
    } 
} 

參見:

DNX Secret Configuration

Rick Anderson's Draft on App Secrets

+0

這個問題特別是關於如何在ASPNET 5中配置郵件設置(我猜這可能指的是ASP.Net Core,現在是v2)。請注意,這並不一定表示詢問的人正在運行.NET Core。 .NET Framework 4.52或更高版本將與ASP.NET Core配合使用。 – ewilan

相關問題