2015-05-01 13 views
9

मैं जब अनुरोध एक ईमेल दर्ज करने की आवश्यकता का उपयोग कर .EML फ़ाइल नाम निर्दिष्ट करें।System.Net.Mail.MailAddress या अन्य पुस्तकालय

मेरे कोड के नीचे काम करता है:

  • ईमेल भेजता है जब अनुरोध
  • फ़ाइलें ईमेल करें लेकिन मेरे फ़ाइल नाम निर्दिष्ट करने के लिए अनुमति नहीं है
  • (एक फ़ाइल नाम के रूप में guid उपयोग करता है)
  • उदाहरण: c: \ आर्काइव \ ईमेल \ 1003d05d-11ca-45e2-a5f4-cf2da29c39d9.eml

संभावित समाधान:

  1. सहेजें एक अस्थायी फ़ोल्डर के लिए फ़ाइल, फ़ाइल का नाम बदलें, और फिर अंतिम गंतव्य
  2. सहेजें फ़ाइल किसी अन्य विधि का उपयोग कर, बेहतर प्रदर्शन करने के लिए कॉपी

पेशेवर और विपक्ष

  • समाधान 1: है बदसूरत और बुरे प्रदर्शन

प्रश्न है

किसी को भी, एक ईमेल करने के लिए "MySpecifiedFileName.eml" दर्ज करने का तरीका नाम बदलने के लिए और फिर कॉपी बिना पता है?

मौजूदा कोड:

Public Shared Sub Send(ByVal EmailFrom As String, ByVal EmailTo As String, ByVal Subject As String, ByVal HTMLBody As String, Optional SaveToFile As Boolean = False, Optional SaveFilepath As String = "") 
    Dim MyMsg As MailMessage = New MailMessage 

    Dim Recipients() As String 
    Recipients = Split(EmailTo, ";") 

    With MyMsg 
     .From = New System.Net.Mail.MailAddress(EmailFrom) 
     For i = 0 To Recipients.Count - 1 
      If Recipients(i).ToString <> "" Then 
       .To.Add(New System.Net.Mail.MailAddress(Recipients(i))) 
      End If 
     Next 
     .Sender = New System.Net.Mail.MailAddress(EmailFrom) 
     .Subject = Subject 
     .Body = HTMLBody 
     .BodyEncoding = System.Text.Encoding.UTF8 
     .IsBodyHtml = True 
     .Priority = MailPriority.High    
    End With 

    Dim SmtpServer As New SmtpClient(My.Settings("SMTPServer")) 
    SmtpServer.Send(MyMsg) 

    REM 
    REM Save Email when requested 
    REM 
    If SaveToFile = True Then 
     Dim client As New SmtpClient(My.Settings("SMTPServer")) 
     client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory 
     client.PickupDirectoryLocation = SaveFilepath 
     client.Send(MyMsg) 
     client = Nothing 
    End If 
    MyMsg = Nothing 
    SmtpServer = Nothing 
End Sub 
+2

एक संभव समाधान के लिए http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as-eml-or-msg-file देखें। आप इसे स्ट्रीम में सहेज सकते हैं और फिर आप स्ट्रीम को अपनी पसंद के फ़ाइल नाम पर सहेज सकते हैं। –

+1

इस होने जा रहा है, तो एकल पिरोया है (यानी, केवल एक ही ईमेल किसी भी समय सहेजे जाने), आप इसे एक अस्थायी निर्देशिका के लिए बचा सकते हैं, और उसके बाद नाम बदलने और स्थायी अंतिम गंतव्य में फ़ाइल। यदि client.send फ़ाइल नाम लौटाता है, तो आप इसका नाम बदल सकते हैं। –

+0

आपकी टिप्पणियों के लिए धन्यवाद। मैं कोशिश करूँगा –

उत्तर

3

एलन ईगल से अधिक CodeProject.com में एक extension of the System.Net.Mail.MailMessage class कि एक विशिष्ट फ़ाइल नाम के साथ एक ईमेल को बचाने के लिए की क्षमता शामिल है बनाया गया है। मेरा मानना ​​है कि यह आपके द्वारा उठाए गए मुद्दे को संबोधित करेगा।

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