用于使用SMTP发送邮件的VBscript for.mht文件附件

用于使用SMTP发送邮件的VBscript for.mht文件附件,vbscript,smtp,Vbscript,Smtp,我正在使用Gmail SMTP服务器发送一个.mht文件。一旦发送出去,我得到了很多附件和.mht文件加载在电子邮件正文(从雅虎邮件)。相反,在outlook中,我将其作为邮件附件获取。 用于此操作的VB脚本: Set objMessage = CreateObject("CDO.Message") objMessage.HTMLBody = "<h1>Matrikon AM</h1>" objMessage.Subject = "Test 1 -Blank" obj

我正在使用Gmail SMTP服务器发送一个.mht文件。一旦发送出去,我得到了很多附件和.mht文件加载在电子邮件正文(从雅虎邮件)。相反,在outlook中,我将其作为邮件附件获取。 用于此操作的VB脚本:

Set objMessage = CreateObject("CDO.Message")
objMessage.HTMLBody = "<h1>Matrikon AM</h1>" 
objMessage.Subject = "Test 1 -Blank" 
objMessage.From = "xxxxx@gmail.com" 
objMessage.To = "xxxxx@yahoo.com" 
objMessage.TextBody = "From b.vbs"
objMessage.AddAttachment "c:\xxxxxxx\A1.mht" 
objMessage.Send
Set objMessage=CreateObject(“CDO.Message”)
objMessage.HTMLBody=“Matrikon AM”
objMessage.Subject=“测试1-空白”
objMessage.From=”xxxxx@gmail.com" 
objMessage.To=”xxxxx@yahoo.com" 
objMessage.TextBody=“来自b.vbs”
objMessage.AddAttachment“c:\xxxxxxx\A1.mht”
objMessage.Send
我在网上进行了一些快速搜索,“ContentMediaType”必须在某个地方定义,因为文件扩展名是.mht。 需要这方面的帮助,因为我找不到定义内容类型的方法。 我的问题和我在书中提到的一模一样

谢谢。

这是来自帮助

urn:schemas:mailheader:Namespace

urn:schemas:mailheader:namespace定义了包含Internet标准消息头值的字段。每个字段值(除少数例外)存储为US-ASCII字符,与消息流中的ASCII字符串相同。非US-ASCII字符根据RFC 1522规范进行编码。设置或更新特性值时不执行任何转换。设置原始消息标头属性的应用程序必须对非US-ASCII字符进行RFC 1522编码,否则标头值将损坏

字符串常量在每个字段名称的C++头文件CDOSYSTR.H和类型库(cDoMaIdHead模块)中提供。引用字段时可以使用这些常量,以避免键入错误和额外键入

范例 下面的示例演示如何使用urn:schemas:mailheader:namespace中的字段。首先,为消息添加RFC 822头。接下来,添加主体部分并手动设置MIME头

此代码仅用于说明目的

复制代码

Dim iMsg as New CDO.Message
Dim Flds as ADODB.Fields
With iMsg
  .To   = """Someone"" <example@example.com>"
  .From = """Me"" <example@example.com>"
  .Subject = "Here is a sample message"

   ' Now set some custom mail headers using the raw fields collection
   Set Flds = .Fields
   With Flds
     .Item("urn:schemas:mailheader:X-Mailer")  = "Microsoft CDO for Windows 2000"
      ' I add a custom header here
     .Item("urn:schemas:mailheader:Myheader")= "some value"
     .Update
     .Resync
   End With ' Flds
End With ' iMsg
' Create a multipart/alternative (HTML) message below

Dim iBp as CDO.IBodyPart
Dim iBp2 as CDO.IBodyPart

Set iBp = iMsg   '  get IBodyPart on Message object

Set Flds = iBp.Fields
Flds("urn:schemas:mailheader:content-type") = "multipart/alternative"
Flds.Update

Set iBp2 = iBp.AddBodyPart
Set Flds = iBp2.Fields
Flds("urn:schemas:mailheader:content-type") = "text/plain"
Flds("urn:schemas:mailheader:content-transfer-encoding") = "quoted-printable"
Flds.Update

Dim Stm as ADODB.Stream
Set Stm = iBp2.GetDecodedContentStream
Stm.WriteText "This is a test", stWriteLine
Stm.Flush

Set iBp2 = iBp.AddBodyPart
Set Flds = iBp2.Fields
Flds("urn:schemas:mailheader:content-type") = "text/html"
Flds("urn:schemas:mailheader:content-transfer-encoding") = "quoted-printable"
Flds.Update

Set Stm = iBp2.GetDecodedContentStream
Stm.WriteText "This is a <i>test</i>", stWriteLine
Stm.Flush

iMsg.Send
Dim iMsg作为新CDO.消息
将FLD设置为ADODB.字段
与iMsg
.To=“”某人“”
.From=“”我“
.Subject=“这是一条示例消息”
'现在使用原始字段集合设置一些自定义邮件标题
设置Flds=.Fields
使用FLD
.Item(“urn:schemas:mailheader:X-Mailer”)=“Microsoft CDO for Windows 2000”
'我在此处添加自定义标题
.Item(“urn:schemas:mailheader:Myheader”)=“一些值”
.更新
.重新同步
以“FLD”结尾
以“iMsg”结尾
'在下面创建多部分/备选(HTML)消息
将iBp设置为CDO.IBodyPart
将iBp2设置为CDO.IBodyPart
设置iBp=iMsg'在消息对象上获取IBodyPart
设置Flds=iBp.字段
FLD(“urn:schemas:mailheader:content-type”)=“多部分/可选”
飞行资料更新
设置iBp2=iBp.AddBodyPart
设置Flds=iBp2.字段
FLD(“urn:schemas:mailheader:content-type”)=“文本/普通”
FLD(“urn:schemas:mailheader:content-transfer-encoding”)=“引用的可打印”
飞行资料更新
作为ADODB.Stream的Dim Stm
设置Stm=iBp2.GetDecodedContentStream
Stm.WriteText“这是一个测试”,stWriteLine
冲洗
设置iBp2=iBp.AddBodyPart
设置Flds=iBp2.字段
Flds(“urn:schemas:mailheader:content-type”)=“text/html”
FLD(“urn:schemas:mailheader:content-transfer-encoding”)=“引用的可打印”
飞行资料更新
设置Stm=iBp2.GetDecodedContentStream
Stm.WriteText“这是一个测试”,stWriteLine
冲洗
iMsg.发送

谢谢你的回复。谢谢你的回复。因为我对这个Vbscript非常陌生,所以对此不确定。如果我用你的代码替换了我现有的VBscript,你能告诉我吗?这是否适用于.mht附件?我需要编辑代码吗?然后,当我运行它时,它给出的错误是“Line:1 char:10 error:Expected end of statement.”有人能帮助我使用脚本吗?我能知道我应该在VBsccript中添加什么才能获得.mht attachement吗?正如我所知,我需要在某个地方定义“内容类型”。。