110,534
社区成员
发帖
与我相关
我的任务
分享
private void DownLoadFile(string path, EmailMessage email, Attachment at)
{
try
{
Attachment attachment = email.Attachments.Single(x => x.ContentId == at.ContentId);
attachment.Load();
FileAttachment fileAttachment = attachment as FileAttachment;
fileAttachment.Load();
byte[] bytes = fileAttachment.Content;
File.WriteAllBytes(path, bytes);
}
catch (Exception ex)
{
}
}
public async System.Threading.Tasks.Task<ExchangeEmail> GetBody(ItemId Id)
{
EmailMessage email = EmailMessage.Bind(service, Id);
#region xiaolu Add 15-7-8 附件内容
Dictionary<string, string> atts = new Dictionary<string, string>();
if (email.HasAttachments)
{
var att = email.Attachments;
foreach (var at in att)
{
var guid = Guid.NewGuid().ToString();
var ext = at.Name.Substring(at.Name.LastIndexOf('.'));
var linpath = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/UpLoad/App/Mail/" + guid + ext;//连接地址
atts.Add(linpath, at.Name);
var path = HttpContext.Current.Server.MapPath("~/UpLoad/App/Mail/" + guid + ext);//保存的文档路径
await System.Threading.Tasks.Task.Run(() => { DownLoadFile(path, email, at); });
}
}
#endregion
ExchangeEmail mee = new ExchangeEmail();
mee.Body = email.Body;
mee.DateTimeCreated = email.DateTimeCreated;
mee.DateTimeReceived = email.DateTimeReceived;
mee.Id = email.Id;
mee.Sender = email.Sender.Name;
mee.Subject = email.Subject;
mee.Atts = atts;
mee.SenderEmail = email.Sender.Address;
//mee.Body = email.TextBody;
return mee;
}
void 按钮点击事件响应方法()
{
用线程池起来一个线程记录日志;//不阻塞 无回调
上传文件并处理方法();//不阻塞 看似没有回调,其实回调放到了这个方法里面
}
async void 上传文件并处理方法() //此处async理解为这是一个与主线程无关的处理流程
{
string newURL=await 上传文件方法();
数据库保存新文件地址方法();//这个理解为上传文件方法执行完后,根据他的返回值执行的回调
}
Task<string> 上传文件方法()
{
return Task.Run(() =>
{
// 具体的上传文件逻辑
return 上传文件后得到的新地址;
});
}
public ExchangeEmail GetBody(ItemId Id)
{
EmailMessage email = EmailMessage.Bind(service, Id);
#region xiaolu Add 15-7-8 附件内容
Dictionary<string, string> atts = new Dictionary<string, string>();
if (email.HasAttachments)
{
var att = email.Attachments;
foreach (var at in att)
{
var guid = Guid.NewGuid().ToString();
var ext = at.Name.Substring(at.Name.LastIndexOf('.'));
var linpath = "http://" + HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/UpLoad/App/Mail/" + guid + ext;//连接地址
atts.Add(linpath, at.Name);
var path = HttpContext.Current.Server.MapPath("~/UpLoad/App/Mail/" + guid + ext);//保存的文档路径
DownLoadFile(path, email, at);
}
}
#endregion
ExchangeEmail mee = new ExchangeEmail();
mee.Body = email.Body;
mee.DateTimeCreated = email.DateTimeCreated;
mee.DateTimeReceived = email.DateTimeReceived;
mee.Id = email.Id;
mee.Sender = email.Sender.Name;
mee.Subject = email.Subject;
mee.Atts = atts;
mee.SenderEmail = email.Sender.Address;
//mee.Body = email.TextBody;
return mee;
}
private void DownLoadFile(string path, EmailMessage email, Attachment at)
{
System.Threading.Tasks.Task.Run(() =>
{
try
{
Attachment attachment = email.Attachments.Single(x => x.ContentId == at.ContentId);
attachment.Load();
FileAttachment fileAttachment = attachment as FileAttachment;
fileAttachment.Load();
byte[] bytes = fileAttachment.Content;
File.WriteAllBytes(path, bytes);
}
catch (Exception ex)
{
}
});
}