2015-05-18 9 views
11

में System.Net.Mail का उपयोग करना मुझे एएसपी नेट 5 प्रोजेक्ट के भीतर एक साधारण नकली मेल प्रेषक बनाने में परेशानी है।एएसपी नेट एमवीसी 6 प्रोजेक्ट

यहाँ विधि:

public static Task SendMail(string Email, string Subject, string Body) 
    { 
     SmtpClient client = new SmtpClient(); 
     client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 
     client.PickupDirectoryLocation = "C:\\TMP"; 

     MailAddress from = new MailAddress("[email protected]", "Jane " + (char)0xD8 + " Clayton", System.Text.Encoding.UTF8); 
     MailAddress to = new MailAddress(Email); 

     MailMessage message = new MailMessage(from, to); 
     message.Body = Body; 
     message.BodyEncoding = System.Text.Encoding.UTF8; 
     message.Subject = Subject; 
     message.SubjectEncoding = System.Text.Encoding.UTF8; 

     client.Send(message); 
     message.Dispose(); 

     return Task.FromResult(0); 
    } 

मैं निर्भरता 'System.Net.Mail' को शामिल किया है, लेकिन एक टूलटिप का कहना है कि पुस्तकालय DNX 4.5.1 में नहीं बल्कि DNX कोर 5.0 में उपलब्ध है, और परियोजना संकलित नहीं होगी।

मेरी project.json में वहाँ है:

"frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
} 
+0

मैं नहीं मानता कि 'SmtpClient' नेट कोर में पोर्ट किया जा रहा है ... :-)। (आप http: //packagesearch.azurewebsites का उपयोग कर सकते हैं।नेट/नए NuGet पैकेज खोजने के लिए, और कोई नहीं है।) क्या आपको नेट कोर चाहिए? –

+1

नहीं, आप सही हैं: क्योंकि इसे परियोजना टेम्पलेट्स में डिफ़ॉल्ट रूप से शामिल किया गया था, मैंने सोचा कि मुझे इसकी आवश्यकता है, लेकिन यह इसके बिना ठीक काम करता है। धन्यवाद ! –

+0

देखें https://github.com/dotnet/corefx/issues/1006 –

उत्तर

5

मैं नहीं मानता कि SmtpClient नेट कोर में पोर्ट की जा रही है। (आप नए NuGet संकुल को खोजने के लिए unofficial reverse package lookup उपयोग कर सकते हैं, और वहाँ एक नहीं है।)

जब से तुम नेट कोर की जरूरत नहीं है, तो आप अपने project.json में अपने frameworks से dnxcore50 प्रविष्टि निकाल सकते हैं।

11

आज के रूप में, यह अब संभव है net451 (और अन्य प्लेटफार्मों के बहुत सारे) के अलावा dnxcore50 पर ईमेल भेजने के लिए MailKit

मैं ASP.NET 5 RC1 उपयोग कर रहा हूँ का उपयोग कर और मैं करने के लिए इन निर्भरता जोड़ा मेरी project.json जरूरत nugets

"MimeKit": "1.3.0-beta1", 
"MailKit": "1.3.0-beta1" 

में लाने के लिए तो dnxcore50 में System.Net.Mail की कमी नहीं रह गया है एक समस्या है, MailKit पुस्तकालय वास्तव में और अधिक सुविधा पुराने सिस्टम की तुलना में समृद्ध है। नेट। मेल सामान।

जेफरी स्टीफफास्ट के लिए कड़ी मेहनत के लिए बहुत धन्यवाद।

+2

जेफरी स्टीफफास्ट पर हैट्स, लेकिन उनका काम आवश्यक नहीं होना चाहिए था। ई-मेल अधिकांश वेब अनुप्रयोगों का एक महत्वपूर्ण हिस्सा है: पंजीकरण पुष्टि, पासवर्ड पुनर्प्राप्ति, फ़ोरम प्रतिक्रिया अधिसूचनाएं, ऑर्डर पुष्टिकरण इत्यादि। तथ्य यह है कि हम मेल कक्षाओं के बंदरगाह के बिना आरसी में हैं, हल्के निराशाजनक हैं। यदि कोई एकल डेवलपर मेलकिट लिख सकता है, तो ASP.net पर काम कर रहे उज्ज्वल माइक्रोसॉफ्ट दिमाग की एक टीम पुराने कोड को पोर्ट नहीं कर सकती है? लिनक्स/ओएसएक्स को व्यावहारिक विकल्पों के रूप में बाधित करने के लिए? मैं कई नई कार्यक्षमताओं/विशेषताओं को खोद रहा हूं, लेकिन यह एक बहुत ही गंभीर चूक की तरह लगता है। – Sam

+4

@ सैम स्टैक ओवरफ़्लो पर यहां लंबी चर्चा में शामिल नहीं होने के लिए, लेकिन मुझे लगता है कि आदत: * आप हाथी कैसे खाते हैं? एक समय में एक काटने। * निश्चित रूप से उस काम पर लागू होता है जो माइक्रोसॉफ्ट .NET कोर पर कर रहा है। – ahsteele

+0

गिटहब पर नेट कोर बैकलॉग देखें: https://github.com/dotnet/corefx/issues/1006 –

1

नेट कोर के लिए एक निर्भरता के रूप में इसे जोड़ने के लिए project.json अपडेट करके MailKit प्राप्त करने के लिए सुनिश्चित हो ...

"MailKit": "~1.6.0" 

एक पूरा उदाहरण के लिए GitHub पर MailKit देखें: https://github.com/jstedfast/MailKit

0

हैं आपने विजुअल स्टूडियो 2017 में अपनी प्रोजेक्ट स्थापित की है, तो यह समाधान काम करेगा:

  1. अपनी प्रोजेक्ट की .csproj फ़ाइल संपादित करें। प्रोजेक्ट नाम पर राइट-क्लिक करें और 'Project1.csproj संपादित करें' चुनें (यदि आपका प्रोजेक्ट नाम प्रोजेक्ट 1 है)। प्रोजेक्ट की एक्सएमएल फाइल खुलती है। 'TargetFramework' को net452 में बदलें और मूल्य win7-x86 के साथ 'रनटाइम इंडेंटिफायर' टैग जोड़ें। तो यह इस तरह दिखता है:

    [PropertyGroup] [TargetFramework] net452 [/ TargetFramework] [RuntimeIdentifier] Win7-86 [/ RuntimeIdentifier] [/ PropertyGroup]

(सभी कोष्ठक बिज की जगह 'से कम' और 'से अधिक' संकेत) आपकी परियोजना .NET Framework 4.5.2 से जुड़ी होगी और सभी पुस्तकालय तब उपलब्ध होंगे, जिसमें System.NET.Mail Namepace भी शामिल है।

मेरे लिए, यह एक काम कर समाधान

संबंधित मुद्दे