我正在使用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更改为7位,而base64没有工作。
我试图将ContentMediaType设置为text/plain的附件,但失败了。
添加后,我试图不重命名附件,但没有工作。
默认情况下,附件的ContentMediaType设置为application/octet-stream,因此我不知道为什么(以及根据什么)会首先更改它。
如果我在附件上在.SaveToFile()之后立即执行.Send(),它会在磁盘上保存有效的文件。
这是我的代码中的问题,还是邮件服务器设置之类的问题?
发布于 2008-12-11 14:43:56
好吧,太奇怪了。
我们使用我们的gmail帐户来测试这个东西,更具体地说,gmail网络界面。我们点击附件链接,以保存被翻版的文件。文件被破坏了。
我们一试了一些厚厚的客户,结果就没问题了。所有文件都可以正常下载,不会有任何损坏。
因此,我假设这是gmail接口中的一个bug (而不是gmail POP3接口)。
发布于 2008-12-11 14:20:36
我很久没有使用CDO了,但我记得以前有过这个问题。通过尝试不同的东西,我们发现如果消息正文中有任何内容,那么附件就被正确地发送了。
奇怪,我知道。
试着让我们知道。
发布于 2009-05-07 03:42:16
我只是遇到了同样的麻烦。我切换到Jmail,我的CSV (文本文件)现在和我从gmail读取它的时候完全一样了。
我比较了原始消息(在Gmail中,选项-查看原始消息),并发现在CDO.Message中,附件没有被很好地编码,它是以文本格式保存的,邮件客户端用它做他想做的事情。使用Jmail时,消息是用Base64编码的,因此从开始到结束都保持在原始状态。因此,在使用带有文本文件附件的CDO.Message时要小心!尝试使用Jmail (免费)代替。
CDO.message:内容传输-编码:引用-可打印
Jmail.message:内容传输-编码: base64
https://stackoverflow.com/questions/359452
复制相似问题