如何发送本地 .eml 文件(如果存在)



我正在创建一个服务,该服务在本地目录中查找 .eml 文件,如果存在,则会发送它。如何在不下载必须付费的 dll 的情况下执行此操作?我应该使用取件目录,还是有办法加载文件并将其(带有附件(发送到一个电子邮件地址?

编辑:这是我到目前为止所拥有的。我用了CDO。加载 .eml 消息部分的消息,因为方法 .load(filePath( 仅包含在非开源的 dll 中。然后,我获取不同的邮件部分,并将它们保存到将使用 Exchange 服务发送电子邮件的电子邮件对象中。我在将附件与 msg 对象分离时遇到问题。我是否应该将附件另存为与 .eml 不同的文件,并在构建邮件后附加它?

            CDO.Message msg = new CDO.Message();
            ADODB.Stream stream = new ADODB.Stream();
            string fileName = "mail.eml";     
            string path = @"C:UserssomebodyDesktopFolder" + "\" + fileName;
            stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown, ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty);
            stream.LoadFromFile(path);
            stream.Flush();
            msg.DataSource.OpenObject(stream, "_Stream");
            msg.DataSource.Save();
            stream.Close();
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
            service.Credentials = new WebCredentials("fromEmail@example.com", "Pass");
            service.AutodiscoverUrl("fromEmail@example.com", RedirectionUrlValidationCallback);
            if (File.Exists(path))
            {
                EmailMessage message = new EmailMessage(service);
                message.Subject = msg.Subject;
                message.Body = msg.TextBody;
                msg.To = "toEmail@example.com";
                msg.From = "toEmail@example.com";
                foreach (var attachment in msg.Attachments)
                {
                    var attach = attachment;
                }                  
                message.Send();
                Console.WriteLine("Message sent!");
            }

这是给你的伪代码:

doTheJob(directory)
{
   files = list files from directory;
   foreach file in files
   {
      mail = create mail data from file;
      send(mail); 
   }
}

棘手的部分是从文件创建邮件数据,但可以肯定的是,您会在SO上找到有关在C#中读取EML文件的asnwer。

注意:这个答案和问题一样笼统...

相关内容

  • 没有找到相关文章

最新更新