public static MSGContainer FromMHT(MHTContainer mht) { var container = new MSGContainer(); //container.AssetsFileGetter = mht.GetAssetFile; //container.AssetsGetter = loc => MHTAsset.FromPart(mht.Locations[loc]); // 设置Assets列表 var assets = new Dictionary <string, MHTAsset>(); foreach (var part in mht.Locations) { try { assets[part.Key] = MHTAsset.FromPart(part.Value); } catch { } } container.Assets = assets; string msgs = mht.Parts[1].Content; // 消息部分 // 解析 var reader = new StringReader(msgs); var parser = new MSGMHTParser(reader); while (parser.MoveNext()) { container.Messages.Add(parser.Current); } container.To = parser.To; return(container); }
private string ImgTagEvel(Match m) { string src = m.Groups["src"].Value; //var fn MHTAsset asset = currentContainer.Assets[src]; return(currentContainer.AssetsNameConvision(asset)); }
public void CopyTo(MHTAsset asset, string dest, bool overwrite = false) { string src = GetCacheFile(asset); if (overwrite == false && File.Exists(dest)) { return; } File.Copy(src, dest, overwrite); }
public string GetCacheFile(MHTAsset asset, bool force = false) { string fn = Path.Combine(CacheDir, asset.Hash); if (false == File.Exists(fn) || force) { using (FileStream file = File.Open(fn, FileMode.Create, FileAccess.Write)) file.Write(asset.Bytes, 0, asset.Bytes.Length); } return(fn); }
public static MHTAsset FromPart(MIMEPart part) { var asset = new MHTAsset(); try { asset.Raw = part.Content; asset.Type = part.MediaType; asset.Location = part.Header["Content-Location"]; asset.Encoding = part.Header["Content-Transfer-Encoding"]; } catch (Exception ex) { throw new Exception("不能将 MIMEPart 解析为 Asset", ex); } return(asset); }