首页 > 编程语言 >C#邮件发送类

C#邮件发送类

时间:2024-10-26 18:50:54浏览次数:4  
标签:string C# 邮箱 发送 client mail new 邮件

最近业务需求需要用到自动推送邮件的,写了个邮件推送类方便调用
此类是静态类,直接调用类方法
此类可以多个接收人和多个抄送人,分别用“;”号隔开即可;

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


public class EmailSender
{
    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="fromAddress">发件人地址</param>
    /// <param name="toAddress">收件人地址(可多人,用“;”号隔开)</param>
    /// <param name="ccAddress">抄送人地址(可多人,用“;”号隔开)</param>
    /// <param name="fromName">发件人名称</param>
    /// <param name="passWord">发件授权码,非邮箱登陆密码</param>
    /// <param name="smtpAddress">smtp服务器地址</param>
    /// <param name="mailPort">发件箱端口</param>
    /// <param name="subjectTitle">邮件标题</param>
    /// <param name="body">邮件内容(支持html格式)</param>
    /// <param name="attachment">附件路径</param>
    public static bool SendEmail(string fromAddress, string toAddress, string ccAddress, string fromName, string passWord, string smtpAddress, int mailPort, string subjectTitle, string body, string attachment)
    {
        MailMessage mail = new MailMessage();

        //设置收件人地址,可多个收件人,收件人之间用“;”号隔开即可
        if (toAddress.Length > 0)
        {
            string[] toAdds = toAddress.Split(new char[] { ';' });
            foreach (string to in toAdds)
            {
                mail.To.Add(new MailAddress(to));
            }
        }

        //抄送人地址,可多个抄送人,抄送人之间用“;”号隔开即可
        if (ccAddress.Length > 0)
        {
            string[] ccAdds = ccAddress.Split(new char[] { ';' });
            foreach (string cc in ccAdds)
            {
                mail.CC.Add(new MailAddress(cc));
            }
        }

        //设置发件人邮箱及名称
        mail.From = new MailAddress(fromAddress, fromName);

        mail.Subject = subjectTitle;//邮件标题 
        mail.SubjectEncoding = Encoding.UTF8; //标题格式为UTF8 

        mail.Body = body;//邮件内容
        mail.BodyEncoding = Encoding.UTF8; //内容格式为UTF8 
        mail.IsBodyHtml = true;//设置邮件格式为html格式

        //如果有附件就执行邮件附件添加,如果没有就不用添加
        if (attachment.Length > 0)
        {
            mail.Attachments.Add(new Attachment(attachment));//添加附件
        }

        SmtpClient client = new SmtpClient();

        //发送邮箱信息
        client.Host = smtpAddress; //SMTP服务器地址 
        client.Port = mailPort; //SMTP端口,QQ邮箱填写587 

        client.EnableSsl = true; //启用SSL加密 (使用除QQ邮箱之外的最好关闭)

        //发件人邮箱账号,授权码
        client.Credentials = new System.Net.NetworkCredential(fromAddress, passWord);

        try
        {
            client.Send(mail); //发送邮件
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
}

在这里插入图片描述

标签:string,C#,邮箱,发送,client,mail,new,邮件
From: https://blog.csdn.net/weixin_47361031/article/details/143249086

相关文章

  • 在jenkins中引用credentials
    在jenkins中引用credentialsjenkins配置Pipeline引用withCredentials([usernamePassword(credentialsId:'ameng',passwordVariable:'Password',usernameVariable:'Username')]){sh'dockerlogin--u$Username-p$Uasswordregistry.......
  • Spring IoC——IoC 容器的使用
    1.应用分层应用分层是一种软件开发设计思想,它将应用程序分成N个层次,这N个层次分别负责各自的职责,多个层次之间协同提供完整的功能,根据项目的复杂度,可以分成三层,四层或更多层,MVC就是把整体的程序分成了Model(模型),View(视图),Controller(控制器)三个层次由于后端开发,不需要过多......
  • Qt 反射 newInstance
    pragmaonceinclude<qobject.h>includeusingnamespacestd;classPerson:publicQObject{Q_OBJECTpublic:Q_INVOKABLEPerson(intage,stringname){this->_age=age;this->_name=name;}Person(constPerson&p)noexcept{this->_......
  • EBIS4043 Big Data Analysis and Applications
    ThepurposeofthisassignmentistomakesurethatyouarepickinguptheRbasedanalyticsskills(Pleasedonotuseothertoolstogeneratetheanswers!)thathavebeenintroducedinthisclassandcheckyourability.(Total50marks)1.Usethedataset......
  • React--》掌握Valtio让状态管理变得轻松优雅
    Valtio采用了代理模式,使状态管理变得更加直观和易于使用,同时能够与React等框架无缝集成,本文将深入探讨Valtio的核心概念、使用场景以及其在提升应用性能中的重要作用,帮助你掌握这一强大工具,从而提升开发效率和用户体验。目录初识ValtioValtio基础使用代理与快照订阅与侦......
  • 使用spi-gpio-custom模块配置SPI总线
    使用spi-gpio-custom模块配置SPI总线 来源https://www.xuzhe.tj.cn/index.php/2023/10/26/spi-gpio-customspi/参考专栏 https://www.zhihu.com/column/c_1698084667767709696 1.引言SPI(SerialPeripheralInterface)是一种常见的串行通信协议,广泛应用于微控制器与外部......
  • CSSE2010/CSSE7201 VR Project
    CSSE2010/CSSE7201Semester22024VRProject1CSSE2010/CSSE7201AVRProjectSemester2,2024-Version1.01(06/10/2024)Due:4:00pm,Friday25thOctoberWeighting:20%(100marks)Clarificationsandchangessincetheinitialreleaseoftheprojectspecifica......
  • GNU编译器(GCC)原理简介
    GNU编译器(GCC)原理简介  GNU编译器(GCC,GNUCompilerCollection)是GNU工具链的关键组件,与GNU、Linux相关项目的标准编译器。它设计之初仅用来处理C语言的(也被称为GNUC编译器),紧接着扩展到C++、Objective-C/C++、Fortran、Java、Go等编程语言。目前,GCC已经被以知道各种指令集体......
  • Windows 记录一次磁盘相关的PC卡顿问题
    我的电脑最近经常抽疯,时不时卡顿一次检查系统事件日志,会有这俩个:发出了对设备\Device\RaidPort0的重置。已在磁盘0(PDO名称:\Device\0000003a)的逻辑块地址0x7206a8处重试IO操作。DiskGenis检查磁盘0,是正常的:这个FASPEED硬盘是国产士必得牌子的。京东商城找到F......
  • RF/射频器件: CMD246C4 CMD235C4 CMD236C4 CMD254C3 CMD299K4 CMD262 一款5 W GaN MMI
    CMD246C4是一款宽带GaAsMMIC低相位噪声放大器,采用无引脚表贴封装,非常适合军事、航天和通信系统。16GHz时,该器件提供17dB的增益,饱和输出功率为+18dBm,噪声系数为5dB。此外,对于10GHz的输入信号,该放大器在10kHz失调下具有-165dBc/Hz的低相位噪声性能。CMD235C4是一款宽带MMI......