C#实现自动发送邮件,以及问题解决(SMTP邮箱服务器使用QQ的为例)

为了满足项目需求,今日需要实现一个功能,就是自动发送邮件给某些用户,发送邮件的代码很简单,网上很容易找到,但就是看起来简单的东西可能也会遇到很多问题。

总结一下都有什么问题:
1)命令顺序不正确。服务器响应为:Error:need EHLO and AUTH first!
2)不允许使用邮箱名称。服务器相应为:Local user only,163 smtp1…
3)发送失败
4)SMTP服务器要求安全连接或客户端未通过身份验证。服务器响应为:Authentication required
在这里插入图片描述
基于以上问题,进行了各种尝试,还是得不到解决,于是猜想是不是SMTP服务器的问题,然后各种服务器换来试试都会报错。最后有的人说验证发件人邮箱时不要填密码,而是填写授权码,如下

client.Credentials = new NetworkCredential("123456@qq.com", "ahdIrjof");

果然,修改为授权码后发送邮件成功了。

qq邮件的授权码获取方式:
登录网页版QQ邮箱,点击上方设置,点击pop3点击开启,自行验证,并获取授权码,注意先记录下来。

贴代码:

//实例化一个发送邮件类。
            MailMessage mailMessage = new MailMessage();
            //发件人邮箱地址,方法重载不同,可以根据需求自行选择。
            mailMessage.From = new MailAddress("123456@qq.com");
            //收件人邮箱地址。
            mailMessage.To.Add(new MailAddress("2022eml@163.com"));
            //抄送人邮箱地址。
            //message.CC.Add(sender);
            //邮件标题。
            mailMessage.Subject = "发送邮件测试";
            //邮件内容。
            mailMessage.Body = "这是发送的邮件测试!";
            //是否支持内容为HTML。
            //mailMessage.IsBodyHtml = true;
            //实例化一个SmtpClient类。
            SmtpClient client = new SmtpClient();
            client.Port = 25;
            //在这里使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com。
            //client.Host = "smtp.163.com";
            client.Host = "smtp.qq.com";
            //使用安全加密连接(是否启用SSL)
            client.EnableSsl = true;
            //设置超时时间
            client.Timeout = 10000;
            //不和请求一块发送。
            client.UseDefaultCredentials = false;
            //验证发件人身份(发件人的邮箱,邮箱里的生成授权码);
            client.Credentials = new NetworkCredential("123456@qq.com", "asdgdrtyyr");                                                                                                                           //client.Credentials = new NetworkCredential("liulijun3236@163.com", "ZAJDNCKWHUBHQIMY");//网易
            try
            {
                //发送
                client.Send(mailMessage);
                //发送成功
                MessageBox.Show("发送成功");
            }
            catch (Exception ex)//发送异常
            {
                //发送失败
                MessageBox.Show(ex.Message);
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光使者1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值