当前位置: 首页 > news >正文

C# 发送电子邮件(含附件)用到的类 system.web.mail

主要是用到了System.Web.Mail命名空间,用到了此空间的三个类,分别是:


●MailMessage类,用于构造电子邮件
●MailAttachment类,用于构造电子邮件附件
●SmtpMail类,用于发送电子邮件及其附件
1、MailMessage类构造电子邮件
 此类主要有以下属性和方法
 ★From     发件人的地址
 ★To       以分号分隔的收件人的地址列表
 ★Cc       以分号隔开的抄送的收件人的邮件地址列表
 ★Subject  电子邮件的主题
 ★Body     电子邮件的正文
 ★BodyFormat 电子邮件的正文内容类型,由MailFormat枚举值指定,MailFormat.Text或MailFormat.Html
 ★Attachments 电子邮件附件集合
 ★Priority  电子邮件的优先级,由MailPriority枚举值指定,可以是MailPriority.Low ,MailPriority.Normal或MailPriority.High三者之一
2、Attachment用来构造电子邮件附件.用此类构造了电子邮件附件然后添加到MailMessage对象的Attachments集合即可
3、使用SmtpMail类发送电子邮件,可以通过系统本身的SMTP邮件服务或者其它SMTP服务器来发送,发送电子邮件首先需要设置SmtpMail类的SmtpServer属性,然后使用Send方法发送就可以了
下面做个简单的邮件发送例子:


  using System.Web.Mail;

 

   /// <summary>
    /// 给业务面试人发送面试通知邮件
    /// </summary>
    /// <returns>true/false</returns>

    //发送邮件
    bool sendmailbusi()
    {
        System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
        mail.From = "
aminta@sohu.com";
        mail.To = "
aminta@sohu.com";
        mail.Subject = "测试邮件";
        mail.Body = "这是一封测试邮件";
        mail.BodyFormat = System.Web.Mail.MailFormat.Html;
        mail.BodyEncoding = System.Text.Encoding.UTF8;   //邮件内容编码

        //构造添加附件(可以发多个附件给多个收件人)
        System.Web.Mail.MailAttachment mailAttach_1 = new System.Web.Mail.MailAttachment(@"E:\上岗考核表-入职.doc");
        System.Web.Mail.MailAttachment mailAttach_2 = new System.Web.Mail.MailAttachment(@"E:\填表说明.doc");
        System.Web.Mail.MailAttachment mailAttach_3 = new System.Web.Mail.MailAttachment(@"E:\上岗考核表-转正.doc");
        mail.Attachments.Add (mailAttach_1);
        mail.Attachments.Add(mailAttach_2);
        mail.Attachments.Add(mailAttach_3);

        System.Web.Mail.SmtpMail.SmtpServer = "smtp.sohu.com"; //    发送邮件服务器端口 
        //验证

        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");          //是否需要验证,一般是要的   
        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "aminta");      //自己邮箱的用户名   
        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "123456");     //自己邮箱的密码

        try
        {
            System.Web.Mail.SmtpMail.Send(mail);
            return true;
        }
        catch
        {
            return false;
        }
    }

 

 

// 05的应该是:

例如:
//发送邮件(含附件)
bool sendmail(string mailto,string mailfrom,string content,string loginname,string psd)
{
System.Net.Mail.MailMessage mail = new
System.Net.Mail.MailMessage();
mail.From = new System.Net.Mail.MailAddress(mailfrom.Trim());
mail.To.Add(mailto.Trim());
mail.Subject = "xx公司面试通知函";
mail.IsBodyHtml = true;
mail.BodyEncoding = System.Text.Encoding.UTF8;
//附件
string strFilePath = @"E:\logo.jpg";
System.Net.Mail.Attachment attachment1 = new System.Net.Mail.Attachment(strFilePath);//添加附件
attachment1.Name = System.IO.Path.GetFileName(strFilePath);
attachment1.NameEncoding = System.Text.Encoding.GetEncoding("gb2312");
attachment1.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
attachment1.ContentDisposition.Inline = true;
attachment1.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Inline;
string cid = attachment1.ContentId;//关键性的地方,这里得到一个id数值
mail.Attachments.Add(attachment1);
//邮件正文
mail.Body ="<table width='100%'><tr><td><img src ='cid:"+cid+"'/></td></tr>" +content.Trim();

System.Net.Mail.SmtpClient server = new System.Net.Mail.SmtpClient("mail.xxxx.xxx");    //之前一不留神把公司域名挂上了,在头儿的提醒下赶紧改了,不然惨了,^0^
server.Credentials = new System.Net.NetworkCredential(loginname.Trim(), psd.Trim()); //用户名和密码

try
{
server.Send(mail);

return true;
}
catch
{
return false;
}

}

 

相关文章:

  • 为应用程序池defaultAppPool提供服务的进程在于world wide web publishing服务通信时遇到致命错误 进程id为1356. 数据字段包含错误号
  • realtek PCI-E Gigabit Ethernet Boot Agent
  • 修改ubuntu开机背景颜色
  • 事件ID(54)的描述(在资源(HTTP)中)无法找到 解决办法
  • WIndows 7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
  • APK文件反编译、签名整合工具包
  • .apk文件,IIS不支持下载解决
  • CSS禁止选择文本功能(兼容IE,火狐等浏览器)
  • ASP版MD5加密函数及用法
  • MySQL中进行树状所有子节点的查询
  • mysql中的 IN和FIND_IN_SET的查询问题
  • linux取消屏保
  • Linux下tar.xz结尾的文件的解压方法
  • 解决 /lib/libc.so.6: version `GLIBC_2.11′ not found
  • configure: error: C++ preprocessor /lib/cpp fails sanity check
  • ES6指北【2】—— 箭头函数
  • Bytom交易说明(账户管理模式)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • IDEA常用插件整理
  • IP路由与转发
  • JavaScript创建对象的四种方式
  • js操作时间(持续更新)
  • PhantomJS 安装
  • php的插入排序,通过双层for循环
  • vue自定义指令实现v-tap插件
  • 从0实现一个tiny react(三)生命周期
  • 关于List、List?、ListObject的区别
  • 力扣(LeetCode)21
  • 聊聊flink的TableFactory
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用docker-compose进行多节点部署
  • 正则表达式小结
  • #define
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (Java数据结构)ArrayList
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (安卓)跳转应用市场APP详情页的方式
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)c52学习之旅-流水LED灯
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .NET Core引入性能分析引导优化
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 托管代码与非托管代码
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .Net6使用WebSocket与前端进行通信
  • .Net8 Blazor 尝鲜
  • @RequestBody的使用
  • [100天算法】-目标和(day 79)
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AIGC] 如何建立和优化你的工作流?
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [HDU5685]Problem A