Можем ли мы использовать шаблон типа файла Outlook (.oft) и отправлять электронную почту, используя почтовый SMTP-сервер? - PullRequest
0 голосов
/ 11 июля 2019

Ссылка: https://docs.microsoft.com/en-us/office/vba/api/Outlook.Application.CreateItemFromTemplate

Можно ли использовать вышеуказанную ссылку, но отправлять электронную почту, используя другой SMTP-сервер?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Использование библиотеки MsgReader (Install-Package MSGReader -Version 3.7.3)

Вот решение, которое работает для меня.

using (var msg = new MsgReader.Outlook.Storage.Message(@"C:\\test.oft"))
            {
                var from = msg.Sender;
                var sentOn = msg.SentOn;
                var recipientsTo = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.To, false, false);
                var recipientsCc = msg.GetEmailRecipients(MsgReader.Outlook.RecipientType.Cc, false, false);
                var subject = msg.Subject;
                var htmlBody = msg.BodyHtml;
                var client = new SmtpClient("smtp.gmail.com", 587)
                {
                    Credentials = new NetworkCredential("^^service account email^^", "^^service account password^^"),
                    EnableSsl = true
                };
                var mailMessage = new MailMessage()
                {
                    From = new MailAddress("^^from email^^"),
                    Subject = subject,
                    Body = htmlBody,
                    IsBodyHtml = true,
                    Priority = MailPriority.Normal
                };
                mailMessage.To.Add("^^to email^^");
                client.Send(mailMessage);
            }

Примечание: Решение нене нужно устанавливать какое-либо приложение Outlook и не иметь диалогового окна / всплывающего окна.

Полезные ссылки:

http://forums.codeguru.com/showthread.php?538563-Read-Outlook-Email-Template-(-OFT)-File-and-Save-Message-as-MSG-Format-in-C
https://stackoverflow.com/questions/26633082/read-outlook-msg-file
https://www.codeproject.com/Articles/19571/MsgReader-DLL
0 голосов
/ 11 июля 2019

Если в Outlook настроено несколько учетных записей (включая почтовый сервер smtp), вы можете использовать свойство SendUsingAccount , которое позволяет установить объект Account, представляющий учетную запись, под которой MailItem предназначен длябыть отправленным.

Sub SendUsingAccount()  
 Dim oAccount As Outlook.account  
 For Each oAccount In Application.Session.Accounts  
   If oAccount.AccountType = olPop3 Then  
     Dim oMail As Outlook.MailItem  
     Set oMail = Application.CreateItem(olMailItem)  
     oMail.Subject = "Sent using POP3 Account"  
     oMail.Recipients.Add ("someone@example.com")  
     oMail.Recipients.ResolveAll  
     Set oMail.SendUsingAccount = oAccount  
     oMail.Send  
   End If 
 Next  
End Sub

Вам могут пригодиться следующие статьи:

Как: создать новое сообщение Outlook на основе шаблона

Как: Заполнить поля TO, CC и BCC в Outlook программным способом

Как: создать и отправить сообщение Outlook программным путем

...