代码之家  ›  专栏  ›  技术社区  ›  GSerg

CDO消息:文本附件损坏

  •  1
  • GSerg  · 技术社区  · 17 年前

    我正在使用CDO对象(和VB6)创建电子邮件,但这并不重要。

    With New CDO.Message
      .To = "<address>"
      .Subject = "Manifest test 8"
      .Organization = "<company>"
      .From = "<address>"
      .Sender = .From
    
      With .Configuration
        .Fields(cdoSendUsingMethod).Value = cdoSendUsingPort
        .Fields(cdoSMTPServer).Value = "192.168.0.4"
        .Fields.Update
      End With
    
      With .AddAttachment("c:\import\customermanifestOURACCOUNT11122008110032.dat")
        .Fields(cdoContentDisposition).Value = "attachment; filename=""Consignor.dat"""
        .Fields.Update
      End With
    
      .Send
    End With
    

    如您所见,邮件是空的,并且包含我在电子邮件中重命名的附件。

    附件是一个固定宽度的ASCII文本文件,其中包含来自我们系统的一些输出,每行一个记录,用CRLF分隔。

    当消息被发送时, 所有的CRS都会被剥离出附件,因此接收器会得到一个只有LFS的文件,因此该文件已损坏。

    我试图改变 ContentEncoding 到7bit和base64,都不起作用。

    我试图设置 ContentMediaType 对于附件 text/plain 不起作用。

    我试图在添加后不重命名附件,但不起作用。

    这个 内容媒体类型 因为附件设置为 application/octet-stream 默认情况下,所以我不知道为什么(和通过什么)它会在第一时间发生变化。

    如果我执行 .SaveToFile() 在附件上 .Send() ,它将有效文件保存在磁盘上。

    这是我的代码有问题,还是邮件服务器设置有问题?

    3 回复  |  直到 9 年前
        1
  •  2
  •   GSerg    17 年前

    好吧,真奇怪。

    我们使用我们的gmail帐户来测试这个东西,更具体地说,gmail Web界面。我们单击了附件链接来保存已恢复的文件。文件被破坏了。

    一旦我们尝试了一些厚客户,结果证明是好的。所有文件下载正确,无任何损坏。

    所以我假设这是Gmail Web界面中的一个bug(而不是Gmail POP3界面)。

        2
  •  0
  •   Victor    17 年前

    我已经很久没有使用CDO了,但我记得以前有过这个问题。通过尝试不同的操作,我们发现如果邮件正文中有任何内容,则附件将被正确发送。

    奇怪,我知道。

    试试看,让我们知道。

        3
  •  0
  •   fredo    17 年前

    我也有同样的麻烦。我切换到jmail,当我从gmail中读取时,我的csv(文本文件)和原来的完全一样。

    我比较了原始邮件(在gmail中,选项-查看原始邮件),发现在cdo.message中,附件的编码不是很好,它是以文本格式保存的,邮件客户端可以使用它来做他想做的事情。对于jmail,消息以base64编码,因此从开始到结束都保持其原始状态。因此,在使用带有文本文件附件的cdo.message时要小心!尝试使用jmail(免费)。

    cdo.message:内容传输编码:引用可打印

    jmail.message:内容传输编码:base64

    推荐文章