我正在创建一个服务,该服务在本地目录中查找.eml文件,如果存在则将发送该服务。如何在不下载我必须支付的dll的情况下执行此操作?我应该使用取件目录,还是有办法加载文件并将其(附件)发送到一个电子邮件地址?
编辑:这是我到目前为止所拥有的。 我使用CDO.Message加载.eml消息部分,因为方法.load(filePath)仅包含在非开源的dll中。然后,我将使用不同的消息部分并将它们保存到将使用Exchange服务发送电子邮件的EmailMessage对象。我无法将附件与msg对象分开。我是否应该将附件保存为.eml中的单独文件并在构造消息后附加它?
CDO.Message msg = new CDO.Message();
ADODB.Stream stream = new ADODB.Stream();
string fileName = "mail.eml";
string path = @"C:\Users\somebody\Desktop\Folder" + "\\" + 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!");
}
答案 0 :(得分:-1)
这是一个伪代码:
doTheJob(directory)
{
files = list files from directory;
foreach file in files
{
mail = create mail data from file;
send(mail);
}
}
棘手的部分是从文件创建邮件数据但是你肯定会在SO上找到关于在C#中读取EML文件的asnwer。
注意:这个答案和问题一样一般......