.NET(C#)发送邮件的实现方法

.NET(C#)发送邮件的实现方法

微软已经为我们准备好了现成的工具类供我们调用:

MailMessage	//邮件信息类
SmtpClient	//邮件发送类

首先需要在项目的类文件中引用以下命名空间:

using System.Net;
using System.Net.Mail;


然后直接上封装好的代码:

/// <summary>
/// 发送邮件方法
/// </summary>
/// <param name="mailTo">接收人邮件</param>
/// <param name="mailTitle">发送邮件标题</param>
/// <param name="mailContent">发送邮件内容</param>
/// <returns></returns>
public static bool SendEmail(string mailTo, string mailTitle, string mailContent)
{
    //设置发送方邮件信息,例如:qq邮箱
    string stmpServer = @"smtp.qq.com";//smtp服务器地址
    string mailAccount = @"123456789@qq.com";//邮箱账号
    string pwd = @"xcryxiqzzasaebbe";//邮箱密码(qq邮箱此处使用授权码,其他邮箱见邮箱规定使用的是邮箱密码还是授权码)

    //邮件服务设置
    SmtpClient smtpClient = new SmtpClient();
    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
    smtpClient.Host = stmpServer;//指定发送方SMTP服务器
    smtpClient.EnableSsl = true;//使用安全加密连接
    smtpClient.UseDefaultCredentials = true;//不和请求一起发送
    smtpClient.Credentials = new NetworkCredential(mailAccount, pwd);//设置发送账号密码

    MailMessage mailMessage = new MailMessage(mailAccount, mailTo);//实例化邮件信息实体并设置发送方和接收方
    mailMessage.Subject = mailTitle;//设置发送邮件得标题
    mailMessage.Body = mailContent;//设置发送邮件内容
    mailMessage.BodyEncoding = Encoding.UTF8;//设置发送邮件得编码
    mailMessage.IsBodyHtml = false;//设置标题是否为HTML格式
    mailMessage.Priority = MailPriority.Normal;//设置邮件发送优先级

    try
    {
        smtpClient.Send(mailMessage);//发送邮件
        return true;
    }
    catch (SmtpException ex)
    {
        throw ex;
    }
}

常见问题及错误汇总:

  1. 邮箱授权码怎么获取,以qq邮箱为例:

  2. 抛出错误:System.Net.Mail.SmtpException:“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”

    ​ 解决方案:确认邮箱是使用密码直接登录,还是授权码;

  3. 抛出错误:mail from address must be same as authorization user

    ​ 一般是邮箱账户设置中的 POP3/IMAP/SMTP 未开启

    以qq邮箱为例:同样在账户设置中找到下图,开启红框中的选项即可。

posted @   YoungQ  阅读(3641)  评论(4编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
主题色彩