用Winform群发邮件送祝福01

一年一度的中秋节马上就到啦,小伙伴们收到月饼了吗。

记得我的学生时代,邮件祝福还风靡过一段时间,打开QQ邮箱,各种转发邮件和祝福邮件,现在想想都觉得有点久远了。
相信小伙伴们也都用过群发邮件的功能,例如QQ邮箱,163邮箱等都有提供这种功能,直接发送或者密送都可以。但都会存在一个问题,就是一键发送时,邮件内容都是一样的,无法针对收件人而有个性化的称呼。针对这个需求,我们可以做一个群发邮件的桌面端软件。

我们首先整理下我们需要实现的最简单的功能:

  • 可以输入并记住账号和密码
  • 可以导入收件人信息
  • 可以自由选择收件人
  • 邮件内容可以针对收件人进行个性化修改,可以输入邮件标题,可以附带图片
  • 有发送邮件的功能
  • 需求整理完成,说干就干。

    布局

    首先新建一个窗体,定义为MainForm。将MainForm的初始状态修改为一打开就最大化。

    
    

    我们可以用GroupBox将Mainform划分为三部分,“登录信息”,“收件人信息”,还有“邮件内容”,如图:

    用Winform群发邮件送祝福01

    Tips:因为我们默认窗口最大化,所以我们需要先设置三个GroupBox的Anchor属性,依次分别为“Top,Bottom,Left”,“Top,Bottom,Left”和“Top,Bottom,Left,Right”。这样GroupBox就会随窗口大小变化而不至于打乱布局。

    控件

    划分布局之后,在每一个GroupBox中增加我们需要的控件。

    “登录信息”

    两个Label(标注“账号”与“密码”);

    两个TextBox(用来输入账号与密码);

    两个CheckBox(一个用来记住账户密码,一个用来隐藏密码)。

    用TextBox输入密码时,我们可以设置TextBox的UseSystemPasswordChar属性为True,则我们输入的文字都会以密文显示。与CheckBox联动,默认勾选CheckBox时,密码以符号显示,不勾选CheckBox时,密码以明文显示。

    代码如下:

    
    

    实际效果如图:

    用Winform群发邮件送祝福01

    记住账户与密码涉及本地存储,我们后面具体写代码时再来实现这个功能,先按住不提。

    “收件人信息”

    一个CheckBox(全选功能);

    一个CheckListBox(用来显示导入的收件人信息);

    两个Button(一个用来导入文件,一个用来确认选择收件人);

    一个Label(用来显示已选择的收件人数量)。

    关于CheckListBox的相关设置与全选功能具体可以查看我的上一篇文章(「Winform开发小技巧05」批量操作单号-CheckListBox)

    全选功能代码:

    
    

    这里的操作逻辑是:点击Button导入收件人=>CheckListBox显示收件人=>全选=>Label显示已选人数=>点击Button确认选择,收件人数据传输到下一个部分“邮件内容”。

    导入功能我们可以写一个方法,这里先暂时不写。

    我们可以先解决Label的显示问题。Label显示选择人数时,需要根据CheckListBox中Item的实时勾选状态进行变化,这个比较有趣,我们可以在CheckListBox的Itemcheck事件中实现。

    代码如下:

    
    

    实际效果如图:(因为还没有数据,为了展示效果,我先手动输入一些数据)

    用Winform群发邮件送祝福01

    “邮件内容”

    两个Label;

    两个TextBox(一个用来显示收件人,一个用来输入标题,显示收件人我们可以将其MultiLine属性设置为True,这样可以多行显示);

    一个RichTextBox(用来输入正文内容,后期我们用Html来发送文件,RichTextBox方便我们输入段落及图片);

    一个Button(用来确认发送邮件)。

    效果如图:

    用Winform群发邮件送祝福01

    至此,我们的布局就全部完成了!

    但是大家又没有发现一个问题,由于Winfrom界面缩放问题,我们生成的界面有点模糊,很难看,针对这个问题,微软有专门的解决方案。

    首先右键项目=>添加新建项=>添加应用程序清单文件。

    用Winform群发邮件送祝福01

    打开app.manifest文件,取消application节点注释

    用Winform群发邮件送祝福01

    打开App.config文件,添加节点
    EnableWindowsFormsHighDpiAutoResizing,值为true

    用Winform群发邮件送祝福01

    此时我们重新按F5进行编译,可以发现界面分辨率正常了,瞬间好看不少有没有。

    下篇文章,我们就开始正式编码了,或许可以赶上中秋给大家拜个晚年了,哈哈哈

    如果各位觉得我写的对你有那么一点点帮助,欢迎一键三连~感激不尽~

    来源:辙心在学习

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年8月13日
    下一篇 2021年8月15日

    相关推荐