苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 1607|回复: 2

框架是否有发邮件功能?

[复制链接]

30

主题

45

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2022-11-9 21:26:52 | 显示全部楼层 |阅读模式
如果有,怎么实现利用数据库的数据,生成信息并发送邮件?
回复

使用道具 举报

22

主题

296

帖子

1870

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1870
QQ
发表于 2022-11-10 08:54:02 | 显示全部楼层
在写代码之前,我们需要到我们的邮箱服务商的后台设置一下启动POP3服务。我们以163邮箱为例

在开启POP3服务时,邮箱服务商会提供一个“授权密码”,请一定要保管好这个密码,我们想通过代码发邮件就靠这个密码了,而不是我们日常登陆邮箱的密码。
  1. Dim client As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
  2. client.Host = "smtp.163.com"
  3. client.UseDefaultCredentials = False
  4. '授权密码是指开通POP3服务时服务商提供的授权密码,不是登陆邮箱的密码
  5. client.Credentials = New System.Net.NetworkCredential("wangjian6931@163.com", "授权密码")
  6. client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
  7. Dim message As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
  8. '发送邮箱
  9. message.From = New System.Net.Mail.MailAddress("wangjian6931@163.com")
  10. '收件箱,可以添加多个
  11. message.[To].Add("443100019@qq.com")
  12. '邮件标题
  13. message.Subject = "测试"
  14. '邮件正文
  15. message.Body = "用自己写的软件发的邮件!"
  16. '邮件编码
  17. message.BodyEncoding = System.Text.Encoding.UTF8
  18. '邮件正文是否HTML
  19. message.IsBodyHtml = True
  20. '添加附件
  21. Dim data As New System.Net.Mail.Attachment("e:\a.jpg", System.Net.Mime.MediaTypeNames.Application.Octet)
  22. message.Attachments.Add(data)
  23. Try
  24.         '发送邮件
  25.     client.Send(message)
  26.     MessageBox.Show("Email successfully send.")
  27. Catch ex As Exception
  28.     MessageBox.Show("Send Email Failed." & ex.ToString())
  29. End Try
复制代码


因为像阿里云之类的云服务器是禁用常规SMTP服务器的邮件端口25的,所以上面的代码如果放在云服务器上可能会无法发送。这时候我们需要修改一下自己的代码。
相关参考资料:C# 服务器发送邮件失败实例分析 (51sjk.com)
记录一下C#使用SmtpClient发送网易163、126邮件使用sll协议失败的坑 | 码农家园 (codenong.com)

注意:下面的代码还需要配合云服务器安全策略、防火墙、安全中开放相应的587端口
  1. private bool SendMailTo(string mailTo,string verificationCode)
  2.         {
  3.             System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
  4.             client.Host = "smtp.qq.com";
  5.             client.UseDefaultCredentials = false;
  6.             //授权密码是指开通POP3服务时服务商提供的授权密码,不是登陆邮箱的密码
  7.             client.Credentials = new System.Net.NetworkCredential("443100019@qq.com", "授权密码");
  8.             client.Port = 587;
  9.             client.EnableSsl = false;
  10.             client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
  11.             //
  12.             System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
  13.             //发送邮箱
  14.             message.From = new System.Net.Mail.MailAddress("443100019@qq.com");
  15.             //收件箱,可以添加多个
  16.             message.To.Add(mailTo);
  17.             //邮件标题
  18.             message.Subject = "【森之格】密码重置的验证码";
  19.             //邮件正文
  20.             message.Body = string.Format("此次重置的验证码为:{0},此验证码只能使用一次!验证码有效期为10分钟。", verificationCode);
  21.             //邮件编码
  22.             message.BodyEncoding = System.Text.Encoding.UTF8;
  23.             //邮件正文是否HTML
  24.             message.IsBodyHtml = true;
  25.             try
  26.             {
  27.                 //发送邮件
  28.                 client.Send(message);
  29.                 return true;
  30.             }
  31.             catch (Exception ex)
  32.             {
  33.                 throw;
  34.             }
  35.         }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

22

主题

296

帖子

1870

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1870
QQ
发表于 2022-11-10 14:22:23 | 显示全部楼层
**
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2024-7-5 04:33 , Processed in 0.063735 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表