首先,在工程里引用一个COM:Microsoft CDO for Windows 2000 Library
接着他应该会自动imports俩组件,如果没有的话你自己写:
Imports CDO
Imports ADODB
代码:
Private Sub SendTestCDOMessage()
Dim cdoObj As Object
cdoObj = CreateObject("cdo.Message")
' TODO: 使用本地SMTP服务器
'cdo.Configuration.Fields.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
' 设置外部SMTP服务器
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") _
= CDO.CdoSendUsing.cdoSendUsingPort
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
= "smtp.163.com"
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
= 465
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") _
= CDO.CdoProtocolsAuthentication.cdoBasic
' 身份认证
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") _
= "bbb@163.com"
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") _
= "password"
cdoObj.Configuration.Fields.item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") _
= "true"
' 我就是不知道应该这么写所以整了半天
cdoObj.Configuration.Fields.Update()
' 附件
cdoObj.AddAttachment("C:\\1010.txt", "", "")
' 邮件内容
cdoObj.To = "aaa@qq.com"
cdoObj.From = "bbb@163.com"
cdoObj.Subject = "cdo Test"
cdoObj.TextBody = "Send Email from vb.net using cdo"
' 发送
cdoObj.Send()
cdoObj = Nothing
MsgBox("Done.")
End Sub
想看故事的可以继续这故事简单来说,就是
我TM还是太年轻了
前两天跟几个Hi-Fi玄学家聊常识,对方甩出错误“你丫算根葱”,甩出错误信息“我用十几块钱耳机能听出320kmp3和CD的区别,你行么蠢比?”,于是我炸了
我TM还是太年轻了
我拿VB调FFPLAY写了个盲听测试程序,AB对比,用VB的原因是不写GUI那货不计不会玩,Python写GUI实在很令人发指结果这货跟我说我做的全对啊,能分出来啊!让他截图也不截。遂决定用邮件把结果直接回传,否则还不任凭你诓我。。。于是我准备用VB写邮件发送程序,我本来以为肯定有现成的代码,我就粘粘胶水就行了
我TM还是太年轻了
首先得到的方法是调用System.Net.Mail,代码非常简单,短时间内就搞定了。但是在我用网易邮箱SMTP的过程中,我发现只有25端口的非加密可用,465端口的SSL不可用!这是为毛?换了一个哥们的代码,仍然不起作用。于是再次爆炸。。。
我TM还是太年轻了
最终我才明白,SMTP有Explicit SSL和Implicit SSL两种加密方式,而System.Net.Mail只支持Explicit SSL,不支持Implicit SSL。这不坑爹吗!
于是开始修改搜索关键字,感觉知道了问题所在,应该很快能搞定了。之后进入我视线的是CDO,全名协作数据对象,之前看到过,但是从来没用过,传说只有它能比较好的搞定这个问题。
我TM还是太年轻了
我找到了官方的说明:如何使用 Visual C# 发送带有附件的电子邮件使用 Cdosys.dll 库遂想修改之为VB版本,但是看到
ADODB.Field oField = oFields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
这种玩意儿的时候我还是懵了。。。这用VB怎么写?!
我TM还是太年轻了
最终找到了正确的写法,就是先弄一个CDO.Message对象,然后用item来赋值,最后用update更新。同时还找到了MSDN。
当终于明白这东西该怎么写以后,我猛然发现这东西好用得令人发指。。。
可以用的执行接口:IMessage Interface IBodyPart Interface IDataSource Interface
可以用的 Fields
你可以发现,你对邮件想要的几乎所有功能,抄送,密送,附件,定时发送,都有。哎呀,这感觉。。。美得很。。。
写了这么多代码,回头一看,为了一个SB能做到这个程度,
我TM还是太连青了!。。。
另外是一个决定:以后再用VB就剁手,有必要的话用C#。。。
本文介绍了作者在使用Visual Basic (VB) 发送SSL加密邮件时遇到的问题及解决过程。作者首先尝试使用System.Net.Mail,但发现其不支持Implicit SSL。转向CDO(协作数据对象)后,作者成功找到并实现了使用CDO发送带有附件的电子邮件,包括设置抄送、密送、附件等高级功能。

4469

被折叠的 条评论
为什么被折叠?



