Ho bisogno di inviare un messaggio di posta elettronica quando richiesto.Specificare il nome file .eml utilizzando System.Net.Mail.MailAddress o altra libreria
mio codice qui sotto funziona:
- trasmette l'email
- file l'e-mail quando richiesto
- Ma non mi permette di specificare il nome del file (usa un GUID come nome del file)
- esempio: C: \ Archive \ email \ 1003d05d-11ca-45e2-a5f4-cf2da29c39d9.eml
potenziali soluzioni:
- salvare il file in una cartella temporanea, rinominare il file, e quindi copiare alla destinazione finale
- Salvare il file utilizzando un altro metodo, una migliore performance
Pro e Contro
- Soluzione 1: è brutto e ha cattive prestazioni
Domanda
Qualcuno sa come presentare una e-mail a "MySpecifiedFileName.eml", senza dover rinominare e quindi copiare?
codice esistente:
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
Vedere http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk-as-eml-or-msg-file per una possibile soluzione. È possibile salvarlo su un flusso e quindi è possibile salvare lo stream sul nome file desiderato. –
Se questo sarà single-threaded (vale a dire, solo una e-mail viene salvata in un dato momento), è possibile salvarla in una directory temporanea e quindi rinominare e spostare il file nella destinazione finale permanente. Se client.send restituisce il nome file, puoi semplicemente rinominarlo. –
Grazie per i vostri commenti. Ci proverò. –