C# 谷歌邮箱发送邮件

7 篇文章 0 订阅
本文介绍了如何使用C#通过Gmail发送邮件,包括配置Gmail账号以允许非安全应用访问,代码实现以及调试和生产环境中可能遇到的问题,如连接失败和身份验证错误。解决方案包括启用应用专用密码以解决身份验证问题。
摘要由CSDN通过智能技术生成

1.介绍

记录一下,那些年踩过的坑!

2.谷歌账号及邮箱配置过程

第一步:设置gmail邮箱账号,登录进google.com谷歌账号(需要翻墙) ,进入邮箱服务器,点击右上角的设置,然后选择转发和 POP/IMAP,启用POP和IMAP这两项的功能.

链接: https://mail.google.com/mail/u/0/?ogbl#settings/fwdandpop

在这里插入图片描述

第二步:降低谷歌账号的安全性访问 ,设置“启用”按钮会自动保存,这个是为了降低谷歌的安全检查措施。 如果被停用了需要更改的安全设备性质才能保存。

进入账号链接: https://www.google.com/settings/security/lesssecureapps
在这里插入图片描述
第三步:允许任何设备登陆

链接: https://accounts.google.com/b/0/DisplayUnlockCaptcha在这里插入图片描述
在这里插入图片描述
第四步:到谷歌账号中确认本人所为(注意:布置到生产服务器上需要在这里确认下,最好把第二、三、四步整个设置过程也在服务器上的浏览器走一次)

链接: https://myaccount.google.com/security?origin=3在这里插入图片描述
a.首次调用接口时这里有时会有提示需要确认
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.代码

代码片

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="toEmail">收件人地址</param>
        /// <param name="title">邮件标题</param>
        /// <param name="content ">邮件内容</param>
        public bool SendEmail(string toEmail, string title, string content )
        {
            var emailAcount = "xxxx@gmail.com";//发件邮箱
            var emailPassword = "xxxx";//密码
            var emailSmtp = "smtp.gmail.com";
            var SenderName = "zhong";//发件人名称
            
            MailMessage message = new MailMessage();
            //设置发件人,发件人需要与设置的邮件发送服务器的邮箱一致
            MailAddress fromAddr = new MailAddress(emailAcount,SenderName);
            message.From = fromAddr;
            //设置收件人,可添加多个
            message.To.Add(toEmail);
            //设置抄送人
            //message.CC.Add("xxx@gmail.com");
            //设置邮件标题
            message.Subject = title;

            message.IsBodyHtml = true;
            //设置邮件内容
            message.Body = content;
            //设置邮件发送服务器,服务器根据你使用的邮箱而不同
            SmtpClient client = new SmtpClient(emailSmtp);

            //设置发送人的邮箱账号和密码
            client.Credentials = new NetworkCredential(emailAcount, emailPassword);
            //启用ssl,也就是安全发送
            client.EnableSsl = true;
            //设置587端口
            client.Port = 587;
            //client.Timeout = 50000;
            //client.DeliveryMethod = SmtpDeliveryMethod.Network;//Gmail的发送方式是通过网络的方式,需要指定
            //client.UseDefaultCredentials = false;
            try
            {
                //发送邮件
                client.Send(message);
                return true;
            }
            catch (Exception e)
            {
                Log.WriteLog("发送邮件失败" + e, "log");
                return false;
            }
        }

4.本地调试以及发布生产后可能出现的问题

1.调试错误:连接服务器失败。这需要本地电脑翻墙才可以调试成功
在这里插入图片描述
2.发布生产后的错误:发送邮件失败System.Net.Mail.SmtpException: SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为:5.7.0 Authentication Required. Learn more at!!!

解决方式:再重新走一遍第三、四步。

如果还不行那就直接使用应用专用密码: 先开启两步验证, 再配置应用专用密码。用专用密码来代替原密码。参考: https://blog.csdn.net/qq_38637558/article/details/109453887
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值