मैं जब अनुरोध एक ईमेल दर्ज करने की आवश्यकता का उपयोग कर .EML फ़ाइल नाम निर्दिष्ट करें।System.Net.Mail.MailAddress या अन्य पुस्तकालय
मेरे कोड के नीचे काम करता है:
- ईमेल भेजता है जब अनुरोध
- फ़ाइलें ईमेल करें लेकिन मेरे फ़ाइल नाम निर्दिष्ट करने के लिए अनुमति नहीं है (एक फ़ाइल नाम के रूप में guid उपयोग करता है)
- उदाहरण: c: \ आर्काइव \ ईमेल \ 1003d05d-11ca-45e2-a5f4-cf2da29c39d9.eml
संभावित समाधान:
- सहेजें एक अस्थायी फ़ोल्डर के लिए फ़ाइल, फ़ाइल का नाम बदलें, और फिर अंतिम गंतव्य
- सहेजें फ़ाइल किसी अन्य विधि का उपयोग कर, बेहतर प्रदर्शन करने के लिए कॉपी
पेशेवर और विपक्ष
- समाधान 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
एक संभव समाधान के लिए http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as-eml-or-msg-file देखें। आप इसे स्ट्रीम में सहेज सकते हैं और फिर आप स्ट्रीम को अपनी पसंद के फ़ाइल नाम पर सहेज सकते हैं। –
इस होने जा रहा है, तो एकल पिरोया है (यानी, केवल एक ही ईमेल किसी भी समय सहेजे जाने), आप इसे एक अस्थायी निर्देशिका के लिए बचा सकते हैं, और उसके बाद नाम बदलने और स्थायी अंतिम गंतव्य में फ़ाइल। यदि client.send फ़ाइल नाम लौटाता है, तो आप इसका नाम बदल सकते हैं। –
आपकी टिप्पणियों के लिए धन्यवाद। मैं कोशिश करूँगा –