发送邮件采用了frame的System.Net.Mail

Dim msg As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
msg.To.Add(mailToStr)
msg.From = New MailAddress("liuc@qq.com", "Liuc", System.Text.Encoding.UTF8)
msg.Subject = "报名确认函"
msg.SubjectEncoding = System.Text.Encoding.UTF8
msg.Body = "报名确认函"
msg.BodyEncoding = System.Text.Encoding.UTF8
msg.IsBodyHtml = True '是否是HTML邮件
msg.Priority = MailPriority.High
Dim View As AlternateView = AlternateView.CreateAlternateViewFromString(body, System.Text.Encoding.UTF8, "text/html")'在html中插入本地图片
Dim body As String = ""
body = body + "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN' >"
body = body + "<HTML><HEAD><META http-equiv=Content-Type content='text/html; charset=utf-8'></HEAD><BODY>"
body = body + "<DIV><img src='cid:qrCode'></DIV>"
body = body + "</BODY></HTML>"
Dim View As AlternateView = AlternateView.CreateAlternateViewFromString(body, System.Text.Encoding.UTF8, "text/html")'Dim MS As MemoryStream = New MemoryStream()
'MS = bitmapToGifMemoryStream(img)
Dim imgPathStr As String = "D:\123456.bmp"Dim lrImage As LinkedResource = New LinkedResource(imgPathStr, "image/gif")
lrImage.ContentId = "qrCode"
View.LinkedResources.Add(lrImage)
msg.AlternateViews.Add(View)
'上传本地图片为附件
msg.Attachments.Add(New Attachment(imgPathStr, "image/gif"))Dim client As SmtpClient = New SmtpClient()
client.UseDefaultCredentials = True
client.Credentials = New System.Net.NetworkCredential("liuc@qq.com", "mima123")
'SMTP服务器和端口号
'因为本实例中用来发送邮件的是qq企业邮箱,所以接受服务器用的是smtp.exmail.qq.com
client.Host = "smtp.exmail.qq.com"
client.Port = 25
Tryclient.Send(msg)MessageBox.Show("发送成功")
Catch ex As ExceptionMessageBox.Show(ex.Message, "发送邮件异常")
End Try

以上代码实现了带图片及附件的邮件发送。

但是实际应用中发现,QQ邮箱为了保证安全,他的默认配置是读取纯文本格式的邮件。内容中的图片未被显示,需要在邮件中点击【显示图片】或者【信任发件人的图片】,邮件内容中的图片才会显示出来。

因为我发送邮件的场景是想发送一个带二维码的邮件,如果图片无法显示,则达不到我想要的效果。

因此我考虑,是否可以用<table>标签,拼出一个二维码来,这样就可以解决qq邮箱无法显示图片的问题了。

生成二维码我采用的是Google的ZXing

生成的二维码选用的是QR码。Qr码有40种版本,也就是大小从21*21到177*177。

我要生成二维码的二维码格式基本都是byx123456。经测试,发现生成的二维码的size是25*25.

所以我要先生成一个25*25的二维码。每一个像素都表示一个有效的信息点。

'生成二维码
Dim Writer As BarcodeWriter = New BarcodeWriter()
Writer.Format = BarcodeFormat.QR_CODE
Dim options As ZXing.QrCode.QrCodeEncodingOptions = New ZXing.QrCode.QrCodeEncodingOptions()
'禁用ECI编码段: use UTF-8 encoding and the ECI segment is omitted
options.DisableECI = True
'设置内容编码
options.CharacterSet = "UTF-8"
'设置二维码的宽度和高度
options.Width = 25
options.Height = 25
'设置二维码的边距,单位不是固定像素
options.Margin = 1
options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.H
Writer.Options = options
Dim Map As Bitmap = Writer.Write("byx123456")
Map.Save("D:\byx123456.bmp")

生成的二维码如上图

想要将二维码转化为纯html格式的,我只需遍历这个图片,根据像素点的颜色,设置<td></td>标签的背景色即可。

遍历图片我用的是EmguCV。当然啦,其实根本没必要用Emgu。

'二维码转为纯html
Dim emguImg As Image(Of Gray, Byte) = New Image(Of Gray, Byte)("D:\byx123456.bmp")
Dim qrCodeHtmlStr As String = ""
qrCodeHtmlStr = qrCodeHtmlStr + "<tr>"
qrCodeHtmlStr = qrCodeHtmlStr + "<td><table style='border-collapse:collapse;'>"
For i = 0 To emguImg.Width - 1qrCodeHtmlStr = qrCodeHtmlStr + "<tr>"For j = 0 To emguImg.Height - 1If emguImg.Data(i, j, 0) = 0 ThenqrCodeHtmlStr = qrCodeHtmlStr + "<td width='13' height='13' border='0' padding='0' style='background-color:black;padding:0px;'></td>"ElseqrCodeHtmlStr = qrCodeHtmlStr + "<td width='13' height='13' border='0' padding='0' style='padding:0px;'></td>"End IfNextqrCodeHtmlStr = qrCodeHtmlStr + "</tr>"
Next
qrCodeHtmlStr = qrCodeHtmlStr + "</table></td></tr>"
body = body + qrCodeHtmlStr

再将生成的html插入到邮件中,就可以得到一个qq邮箱也可以查看的纯html的二维码啦

VB.NET邮件群发纯htlm二维码相关推荐

  1. 纯JavaScript二维码在线生成网页源码

    介绍: 纯JavaScript实现二维码生成的网页源码,各位技术爱好者可以拿去研究, 支持设置二维码的各项具体内容,适合专业人士使用. 网盘下载地址: https://zijiewangpan.com ...

  2. 二维码生成插件qrious(纯JS)

    二维码生成插件qrious(纯JS) 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能 ...

  3. vue 生成二维码工具

    使用说明: 二维码生成工具演示地址:jvm123.com/qr-code 此工具纯前端生成二维码,可生成一般的文本.网址和邮件地址. 网址二维码在扫描之后,会启动手机浏览器或微信浏览器打开网址: 邮件 ...

  4. 微信二维码支付快速入门

    目录 一.二维码生成插件qrious 二.HttpClient 三.微信扫码支付 1.申请步骤 2.开发文档 四.入门Demo 1.工程搭建 2.myStudy-pay-interface 3.myS ...

  5. App上线后,如何使用二维码进行推广

    众所周知,智能手机在当今生活中越来越流行,APP也随之迅速发展,APP随之迅猛发展,APPstroe和android这两大手机商店的应用总数已经突破100万,同时各应用商店的应用数量也不断增加,应用数 ...

  6. 网址二维码:如何制作网页链接二维码?

    1994年,一家日本的公司发明了二维码,最开始是用来追踪旗下公司零部件的维修情况.在二维码上有不同的区域,标识不同的信息,比如对齐模式.定时模式.安静区域.版本信息.数据单元等. 现如今二维码和我们的 ...

  7. qrious二维码生成插件

    二维码 什么是二维码 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类 ...

  8. 2022-02-18 Android app 二维码扫描demo,用zxing库,实测ok,记录一下所参考有价值的文章,有生成二维码的demo,但没有亲测。

    一.Android中二维码扫描的最常用库是zxing和zbar,这里用zxing. 二.实测效果图,扫描完成后会以Toast方式显示结果. 三.测试代码的架构 四.代码不细说,想看源码的可以downl ...

  9. Qrious生成图片二维码

    qrious是一款基于HTML5 Canvas的纯JS二维码生成插件.通过qrious.js可以快速生成各种二维码,可以控制二维码的尺寸颜色,还可以将生成的二维码进行Base64编码. qrious. ...

最新文章

  1. 基于 CODING 轻松搞定持续集成
  2. 百度地图API二次开发小经验分享
  3. Python3搭建Django框架浅析
  4. Python中*args和**kwargs
  5. 在Spring MVC中使用注解的方式校验RequestParams
  6. 砰的一声,实验室又炸鸡了
  7. Ajax基本案例详解之$.ajax的实现
  8. 输光200亿,利润暴跌77%!史上最“作死”老字号,还想靠天价翻身?
  9. Apache ActiveMQ消息中间件的基本使用
  10. c++用向量给句子排序_用C ++对向量排序
  11. Angular CLI 常用命令
  12. 【论文笔记】(FGSM公式推导)Explaining and Harnessing Adversarial Examples
  13. AntennaHome Launch 5G Combo Internal PCB Antenna /5G 全频 PCB天线
  14. python生成复合饼图
  15. 论EBS的并发请求(报表中心)的必要性
  16. linux中Swap分区是做什么的?
  17. java 玻璃效果_JavaFX中的磨砂玻璃效果?
  18. 美国标准的网络安全体系架构
  19. php程序yii是什么意思,【PHP开辟框架】yii是什么意义
  20. Crossing Number of Graphs 读书笔记

热门文章

  1. 薄膜电容器在新能源领域应用和发展机遇
  2. 计算机运算和控制核心的简称,计算机的核心是什么
  3. 微信免资金代金券(V3版)java代码
  4. Android 7.0新特性——依然范特西
  5. MBA不修“内功”,智能音箱犯后遗症
  6. “资产证券化支持实体经济万里行”启幕 探索实体经济发展新态势
  7. [Nginx日记](1)Nginx启动与关闭
  8. 新手入门前端,需要学习的基础内容。
  9. Drafting and Revision: Laplacian Pyramid Network for Fast High-Quality Artistic Style Transfer--T Li
  10. 19位银行卡卡号检验源代码