2015-10-07 20 views
16

ASP 5/MVC 6 kombinasyonu ile uğraşıyorum ve artık en basit şeyleri nasıl yapacağımı bilmiyorum. Örneğin, bir e-postayı nasıl gönderirsiniz?ASP 5, MVC 6 e-posta gönderiliyor

MVC 5 dünya böyle bir şey yapacağını: System.Net.Mail artık var gibi görünüyor olarak

using (var smtp = new SmtpClient("localhost")) 
{ 
    var mail = new MailMessage 
    { 
     Subject = subject, 
     From = new MailAddress(fromEmail), 
     Body = message 
    }; 

    mail.To.Add(toEmail); 
    await smtp.SendMailAsync(mail); 
} 

Şimdi bu kod artık derler. Bazıları internette dolaştıktan sonra artık yeni çekirdeğe dahil değil gibi görünüyor ( dnxcore50). Bu benim soruma beni getiriyor ...

Yeni dünyada nasıl bir e-posta gönderiyorsunuz?

Ayrıca, artık çekirdekte yer almayan tüm öğelerin yerini nasıl bulacağınıza dair daha büyük bir soru. Net?

+1

İlginç. Bu sayfaya bir baktınız mı? https://github.com/dotnet/corefx/issues/1006 – ragerory

+2

Asp.net 5'de dnxcore50'yi hedeflemekle sınırlı değilsiniz. Yine de tam .net çerçevesini (veya mono) hedefleyebilirsiniz. Hangi platformu hedefliyorsunuz; Windows, Linux? –

+0

Sanırım, daha sonra, dnxcore50 ile uyumlu bir posta seti nuget'i olacağını umuyorum. Uygulamalarımda e-posta göndermek için kullanmayı planladığım şey https://github.com/jstedfast/MailKit ama muhtemelen pek çok 3. parti değil .net çekirdeği beta –

cevap

4

.NET Core'ın şu anda birkaç eksik API'si var. Bunlar, bulunduğunuz gibi System.Net.Mail.SmtpClient ve RSS veya Atom beslemeleri oluşturmak için de kullanılabilen System.ServiceModel.SyndicationFeed içerir. Bunun için geçici çözüm, .NET Çekirdeği yerine tam .NET Framework'ü hedeflemektir. Bu API'lar kullanıma sunulduğunda her zaman .NET Core'u hedefleyebilirsiniz. Zaten yoksa

Yani project.json dosyasında size dnxcore50 başvurusunu kaldırmak için ve .NET 4.6 için .NET 4.5.1 için dnx451 veya dnx46 eklemeniz gerekir:

"frameworks": { 
    "dnx451": { 
    "frameworkAssemblies": { 
     "System.ServiceModel": "4.0.0.0" 
     // ..Add other .NET Framework references. 
    } 
    }, 
    // Remove this to stop targeting .NET Core. 
    // Note that you can't comment it out because project.json does not allow comments. 
    "dnxcore50": {    
    "dependencies": { 
    } 
    } 
} 
+2

'dan çıkana kadar her şey mevcut olacak. Her şey temelde "bitti" olsa bile durum sayfasında bile olmadığı için eksik olmanın ötesine benziyor. https://github.com/dotnet/corefx-progress/blob/master/src-diff/README.md –

27

Benim açık kaynak MimeKit ve MailKit kitaplıkları artık e-posta oluşturmak ve göndermek için gerçekten güzel bir API sağlayan dnxcore50'yi desteklemektedir. Ek bir bonus olarak MimeKit, daha fazla bir zorunluluk haline gelen DKIM imzalarını destekliyor.

using System; 

using MailKit.Net.Smtp; 
using MailKit; 
using MimeKit; 

namespace TestClient { 
    class Program 
    { 
     public static void Main (string[] args) 
     { 
      var message = new MimeMessage(); 
      message.From.Add (new MailboxAddress ("Joey Tribbiani", "[email protected]")); 
      message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "[email protected]")); 
      message.Subject = "How you doin'?"; 

      message.Body = new TextPart ("plain") { 
       Text = @"Hey Chandler, 

I just wanted to let you know that Monica and I were going to go play some paintball, you in? 

-- Joey" 
      }; 

      using (var client = new SmtpClient()) { 
       client.Connect ("smtp.friends.com", 587, false); 

       // Note: only needed if the SMTP server requires authentication 
       client.Authenticate ("joey", "password"); 

       client.Send (message); 
       client.Disconnect (true); 
      } 
     } 
    } 
} 
+0

Hangi sürümü kurmalıyım? ASP.Net Core 1 sınıf kitaplığımda 1.3.0-beta6'yı yüklemeyi denedim ancak "Bağımlılık MailKit 1.3.0-beta6, framework'ü desteklemiyor. NetPlatform, Sürüm = v5.4" – Matthew

+0

MailKit, .NETPlatform v5 gerektirir. .5, v5.4'ü hedefliyorsunuz gibi görünüyor. – jstedfast

+0

RC1 şablonlarının varsayılan olarak kurguladığı gibi, RC2 çıkana kadar pek çok insanın hedefleme yapacağını düşünüyorum. – Matthew

1

System.Net.Mail şimdi NET Core taşınır. corefx repo'da Issue 11792 numaralı makaleye bakın. Bu değişiklik .NET Standard 2.0'un bir parçası olacak.

İlgili konular