首页 > 编程语言 >C#发送邮件,包含发送附件

C#发送邮件,包含发送附件

时间:2023-08-11 10:13:55浏览次数:28  
标签:string C# 发送 附件 client new msg 邮箱 邮件

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="sendEmail">收件人邮箱</param>
/// <param name="fromEmail">发件人邮箱</param>
/// <param name="fromName">发件人名称</param>
/// <param name="title">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="sendCC">抄送人邮箱</param>
public static void SendEmail(string sendEmail, string fromEmail, string fromName, string title, string body, List<string> sendCC)
{
    MailMessage msg = new MailMessage();
 
    msg.To.Add(sendEmail); //收件人邮箱
    msg.From = new MailAddress(fromEmail, fromName);  //发件人邮箱和名称
    msg.Subject = title;//邮件标题 
    msg.SubjectEncoding = Encoding.UTF8; //邮件标题格式为UTF8 
    msg.Body = body;//邮件内容
    msg.BodyEncoding = Encoding.UTF8; //邮件内容格式为UTF8 
    msg.IsBodyHtml = true;//设置邮件格式为html格式
    //设置抄送人地址
    if (sendCC != null && sendCC.Count > 0)
    {
        foreach (String cc in sendCC)
        {
            msg.CC.Add(cc);
        }
    }
    //添加附件
    //string filePath = @"C:\附件.xls";
    //msg.Attachments.Add(new Attachment(filePath));
 
    SmtpClient client = new SmtpClient();
 
    client.Host = "smtp.qq.com"; //SMTP服务器地址 
    client.Port = 587; //SMTP端口,QQ邮箱填写587 
    client.EnableSsl = true; //启用SSL加密 (使用除QQ邮箱之外的最好关闭)
    client.Credentials = new System.Net.NetworkCredential(fromEmail, "xxxxxxxxxxx"); //发件人邮箱账号,授权码(不是密码)
    try
    {
        client.Send(msg); //发送邮件
    }
    catch (Exception)
    {
        throw;
    }
}

感謝作者分享

https://blog.csdn.net/qq_21275565/article/details/125422780

https://pythonjishu.com/ldzbkuvvhvzqcdi/

标签:string,C#,发送,附件,client,new,msg,邮箱,邮件
From: https://www.cnblogs.com/ViolinHuang/p/17622309.html

相关文章

  • typeScript学习-TS类型-合成类型
    typeScript学习合成类型:联合类型,交叉类型联合类型:letstr:srting|number="abc"str=3交叉类型:typeObj1={username:string}typeObj2={age:number}letobj:Obj1={username:'zhangsan'}letobj2:Obj2={age:23}letobj3:Obj1&Obj2={username:&#......
  • typeScript学习-TS类型-字面量数据类型
    typeScript学习字面量数据类型://typeA=number|string//leta:A="abc"//typenum=number//letn:num=3typenum=1|2|3letn:num=2//错误情况//letn:num=4typeincreaseFlag=0|1functionisStartUp(increase:increaseFlag){if(in......
  • 微信对空格转换造成curl语句执行失败
    背景:同事给过来一条curl语句,很纯粹的一句语句,执行,报错了。提示:nosuchfileordirectory????一脸的黑人问号❓这么简单的语句,还能报错?并且还非常的莫名其妙。解决后来又发了一句过来,看起来一模一样的语句,执行,竟然又成功了。啊,神奇了。(服务并没有任何的改变)问题了下原来第......
  • LCM Sum[数论+树状数组]
    Problem-E2-Codeforces给一个区间[L,R],询问有多少三元组(i,j,k)满足L=<i<j<k<=r且lcm(i,j,k)>=i+j+k.正难则反。我们可以考虑它的补集。lcm<i+j+k,然后是i+j+k<3*k所以lcm<3k,又因为k是lcm的因数,所以lcm=k或者2k。那么答案变成了求L,R里lcm=k和2k的三元组的数目如果lcm=......
  • $‘\r‘: command not found的解决方法
    缘起在Linux系统中,运行Shell脚本,出现了如下错误:one-more.sh:line1:$'\r':commandnotfound出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行错误。解决方法去除Shell......
  • typeScript学习-TS类型-枚举
    typeScript学习枚举:enum枚举的定义:用来存放一组固定的常量的序列。枚举带来的好处:1、有默认值和可以自增值,节省编码时间2、语义更清晰,可读性增强,因为枚举是一种值类型的数据类型,方法参数可以明确参数类型为枚举类型enumWeekEnd{Monday="myMonday",//......
  • 【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(上)
    推荐超值课程:点击获取前言介绍了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容。基本原理EurekaServer提......
  • AES加密 flutter java后台用的 AES/CBC/PKCS5Padding
     可测试AES是否正确的网址https://www.toolhelper.cn/SymmetricEncryption/AES java后台代码如下publicstaticStringencrypt(StringclearText,Stringkey,Stringiv){byte[]result=null;try{byte[]key_bytes=toByte(MD5Util......
  • 【Elasticsearch】总结
    什么是Elasticsearch?Elasticsearch是基于Lucene的Restful的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当查询时,根据事先建立的索引进行查找,并将查找的结......
  • 【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(下)
    推荐超值课程:点击获取原理回顾EurekaServer提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。EurekaClient是一个Java客户端,用于简化与EurekaServer......