您的位置 首页 > 教育学习

【中秋送礼祝福语】「中秋特辑」用Winform群发邮件送祝福01

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

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

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

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

需求整理完成,说干就干。

布局

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

= FormWindowS;

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

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时,密码以明文显示。

代码如下:

private void cbShowPwd_CheckedChanged(object sender, EventArgs e) { if == true) { = false; } else { = true; } }

实际效果如图:

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


“收件人信息”:

一个CheckBox(全选功能);

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

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

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

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

全选功能代码:

private void cbSelectAll_CheckedChanged(object sender, EventArgs e) { //全选功能 if ) { for (int i = 0; i < ; i++) { if (!(i)) (i,true); } } else { for (int i = 0; i < ; i++) { if ((i)) (i, false); } } }

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

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

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

代码如下:

private void clbReceivers_ItemCheck(object sender, ItemCheckEventArgs e) { //这个事件是指示某项的选中状态将要被更改、在更改前会执行这个事件 //所以c获取的是更改之前的值 if == C) { = "已选:"+ + 1).ToString(); } else { = "已选:" + - 1).ToString(); } }

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

“邮件内容”:

两个Label;

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

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

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

效果如图:

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

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

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

打开a文件,取消application节点注释


打开A文件,添加节点EnableWindowsFormsHighDpiAutoResizing,值为true

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

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


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

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“中秋送礼祝福语,中秋送礼祝福语贺卡,中秋送礼祝福语短语,中秋送礼祝福语,简洁大气”边界阅读