学vb 发邮件难不难?分享几种超简单的实现方法!

吉云

最近手头弄个小程序,寻思着得加个发邮件的功能,比如说程序出错或者任务完成,能自动给我发个提醒邮件,这样就不用老盯着看,方便不少。

我就想着用最简单的方法。上网查查,有人说可以用那个 `Shell` 命令,直接调用系统默认的邮件客户端,后面跟个 `mailto:` 就行。我试下,确实能弹出来写邮件的窗口,收件人地址也能带过去,但感觉不太行,它只是帮你打开邮件软件,还得自己手动点发送,不够自动化,跟我想要的不一样。

摸索其他路子

学vb 发邮件难不难?分享几种超简单的实现方法!

然后我就继续找。看到有人提到用 Outlook 对象。这个听起来好像挺厉害,能直接控制 Outlook 发邮件。但是,我这个小程序是想给别人用的,总不能要求每个人电脑上都装 Outlook ?而且版本不一样可能还会有兼容问题,感觉有点麻烦,依赖性太强,就没深入去弄。

后来又看到说 MAPI 啥的,感觉有点年头,配置起来好像也挺复杂的,看着那些说明文档就头大,也放弃。

找到个靠谱的法子:SMTP

琢磨来琢磨去,觉得还是用 SMTP 协议直接发比较靠谱。基本上现在主流邮箱都支持这个。* 里边好像自带相关的类库,叫 `*`,看起来比较清爽,不用装啥第三方的东西。

决定就开干。打开我的 * 项目,先在代码开头导入那个命名空间:`Imports *`。

接下来就是准备发邮件需要的信息:

学vb 发邮件难不难?分享几种超简单的实现方法!

  • 发件人的邮箱地址
  • 发件人邮箱的密码(或者授权码,现在很多邮箱都推荐用这个,更安全)
  • SMTP 服务器的地址(比如 QQ 邮箱是 *,163 邮箱是 smtp.*)
  • SMTP 服务器的端口号(一般是 25,但现在很多要求 SSL 加密,端口就变成 465 或 587)
  • 收件人的邮箱地址
  • 学vb 发邮件难不难?分享几种超简单的实现方法!

  • 邮件标题
  • 邮件内容

把这些信息都先定义成变量存起来,方便后面用。

开始写代码,踩坑

然后就开始创建邮件对象,代码大概是这样:

学vb 发邮件难不难?分享几种超简单的实现方法!

Dim mail As New MailMessage()

接着就是设置邮件的各个部分:

* = New MailAddress("我的邮箱@*")
*("收件人邮箱@*")
* = "这是邮件标题"
* = "这是邮件正文内容,可以写很多东西。"

学vb 发邮件难不难?分享几种超简单的实现方法!

* = False ' 如果是纯文本就设置成 False,如果是 HTML 就设置成 True

最关键的一步是创建配置 `SmtpClient` 对象,这家伙才是真正负责把邮件发出去的:

Dim smtp As New SmtpClient("*")

这里就遇到第一个坑。一开始我只设置服务器地址,没设置端口和加密,结果老是发不出去。查半天,才知道现在大部分邮箱都要求用 SSL 加密连接。所以得加上端口号和启用 SSL 的设置:

* = 587 ' 或者 465,具体看邮箱服务商的要求
* = True

学vb 发邮件难不难?分享几种超简单的实现方法!

光这样还不行,邮箱服务器得知道你是谁,不然谁都能用你的邮箱发垃圾邮件。所以还得提供用户名和密码(或者授权码)进行身份验证:

* = New *("我的邮箱@*", "我的密码或授权码")

所有东西都设置好之后,一步就是调用 `Send` 方法把邮件发出去

*(mail)

终于成功

把这些代码都写编译运行。紧张地等几秒钟,然后就听到我手机邮箱客户端“叮”一声提示收到新邮件!打开一看,果然是我刚才用程序发的那封测试邮件,标题、内容都对得上!那一刻真是挺开心的,总算把这个功能给搞定。

学vb 发邮件难不难?分享几种超简单的实现方法!

虽然中间查资料、试错花不少时间,特别是那个端口和 SSL 加密搞好一会儿,但整个过程走下来,感觉对 VB 发邮件的理解深刻多。以后再做类似的功能,心里就有底。实践出真知这话,确实不假。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]