我正在尝试将电子邮件的正文从Exchange Web服务电子邮件转换为字节数组,但每次执行此操作时,我都会在将其插入SQL数据库字段后丢失文本的前两个字符类型为image
byte[] emBodyBytes;
foreach (Item item in findResults)
{
if (item is EmailMessage)
{
EmailMessage em = item as EmailMessage;
emBodyBytes = System.Text.Encoding.ASCII.GetBytes(em.Body.Text.ToString());
dEmailMessage thisMailMessage = new dEmailMessage //LINQ-to-SQL
{
emmMessage = emBodyBytes //This is our byte object of the email body string
}
emailDB.dEmailMessages.InsertOnSubmit(thisMailMessage);
}
}
当The quick brown fox
插入SQL e quick brown fox
字段时,image
变为image
。
我有点迷失的地方是转换过程中发生的事情,或者SQL期望为CREATE TABLE [dbo].[dEmailMessages](
[emmMessage] [image] NOT NULL
)
定义的字段引导两个字节。
该字段的定义是
{{1}}
答案 0 :(得分:2)
也许在System.Text.Encoding.ASCII.GetBytes调用之后立即添加如下内容:
System.IO.File.WriteAllBytes("c:\\SomeFile.txt", emBodyBytes)
然后在十六进制查看器中查看生成的文件。查看该阶段是否存在缺少的两个字节。至少这允许您验证GetBytes调用是否按预期运行。
答案 1 :(得分:0)
缺少必要的代码点。我建议通过放弃LINQ to SQL并写出SELECT语句并走向读者来简化,看看是否有帮助。它可能不会,但会使诊断更容易。