我的 C# 程序不下载内联图像
my C# program doesnt download inline images
我处理电子邮件很好。现在,我遇到了一些 PDF 格式的电子邮件,它们必须是内联的,因为它们不会被 .Attachments 注意到。这是我的代码。我无法得到它。请帮忙。谢谢!
var message = mainFolder.GetMessage(i - 1);
eCount++;
// Get specifics of email
var attachments = message.Attachments.ToList();
int attCnt = attachments.Capacity;
string preChk = message.From.ToString();
var msgMsg = new MimePart();
var att2 = new List<MimePart>();
var mp2 = new List<Multipart>();
var iter = new MimeIterator(message);
int mpCnt = 0;
if (attCnt == 0)
{
while (iter.MoveNext())
{
mpCnt += 1;
var mp = iter.Parent as Multipart;
var prt = iter.Current as MimePart;
if (mp != null && prt != null && prt.IsAttachment)
{ //Check if an attachment slipped through
mp2.Add(mp);
att2.Add(prt);
}
}
}
// 如果我展开 iter.MoveNext,我可以深入到图像
iter.MoveNext
我确实弄明白了,我几乎删除了上面的所有代码并将其压缩为只有几行。在我的 var 附件中,如果它 = 0,那么我知道它是内联的。我这样做了:
var bd = message.BodyParts.ToList<MimeKit.MimeEntity>();
通常,我们在附件循环中执行 MimeKit.Mimepart 附件。我发现了几件事。做 var mp = bd.ElementAt(inAttCnt - 1);
var ma2 = mp.ContentType.Name;检查 ma2 <> null。不要做 bd.Remove 你会抛出异常! foreach 会处理它!希望对您有所帮助。
我处理电子邮件很好。现在,我遇到了一些 PDF 格式的电子邮件,它们必须是内联的,因为它们不会被 .Attachments 注意到。这是我的代码。我无法得到它。请帮忙。谢谢!
var message = mainFolder.GetMessage(i - 1);
eCount++;
// Get specifics of email
var attachments = message.Attachments.ToList();
int attCnt = attachments.Capacity;
string preChk = message.From.ToString();
var msgMsg = new MimePart();
var att2 = new List<MimePart>();
var mp2 = new List<Multipart>();
var iter = new MimeIterator(message);
int mpCnt = 0;
if (attCnt == 0)
{
while (iter.MoveNext())
{
mpCnt += 1;
var mp = iter.Parent as Multipart;
var prt = iter.Current as MimePart;
if (mp != null && prt != null && prt.IsAttachment)
{ //Check if an attachment slipped through
mp2.Add(mp);
att2.Add(prt);
}
}
}
// 如果我展开 iter.MoveNext,我可以深入到图像 iter.MoveNext
我确实弄明白了,我几乎删除了上面的所有代码并将其压缩为只有几行。在我的 var 附件中,如果它 = 0,那么我知道它是内联的。我这样做了:
var bd = message.BodyParts.ToList<MimeKit.MimeEntity>();
通常,我们在附件循环中执行 MimeKit.Mimepart 附件。我发现了几件事。做 var mp = bd.ElementAt(inAttCnt - 1); var ma2 = mp.ContentType.Name;检查 ma2 <> null。不要做 bd.Remove 你会抛出异常! foreach 会处理它!希望对您有所帮助。