Ø  发送邮件所用的核心知识点

  • 微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
  • 微软封装好的SmtpClient类:主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
  • SmtpClient主要进行了三层的封装:Socket --> TcpClient --> SmtpClient

Ø  具体代码请看如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net.Mime;
using System.IO;
using System.Timers;
using System.Xml;namespace MyEmailTest
{class Program{static void Main(string[] args){try{//smtp.163.comstring senderServerIp = "123.125.50.133";//smtp.gmail.com//string senderServerIp = "74.125.127.109";//smtp.qq.com//string senderServerIp = "58.251.149.147";//string senderServerIp = "smtp.sina.com";string toMailAddress = "mingmingruyuedlut@163.com";string fromMailAddress = "mingmingruyuedlut@163.com";string subjectInfo = "Test sending e_mail";string bodyInfo = "Hello Eric, This is my first testing e_mail";string mailUsername = "mingmingruyuedlut"; string mailPassword = ".........."; //发送邮箱的密码()string mailPort = "25";string attachPath = "E:\\123123.txt; E:\\haha.pdf";MyEmail email = new MyEmail(senderServerIp, toMailAddress, fromMailAddress, subjectInfo, bodyInfo, mailUsername, mailPassword, mailPort, false, false);email.AddAttachments(attachPath);email.Send();}catch (Exception ex){Console.WriteLine(ex.ToString());}}}public class MyEmail{private MailMessage mMailMessage;   //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)private SmtpClient mSmtpClient; //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)private int mSenderPort;   //发送邮件所用的端口号(htmp协议默认为25)private string mSenderServerHost;    //发件箱的邮件服务器地址(IP形式或字符串形式均可)private string mSenderPassword;    //发件箱的密码private string mSenderUsername;   //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)private bool mEnableSsl;    //是否对邮件内容进行socket层加密传输private bool mEnablePwdAuthentication;  //是否对发件人邮箱进行密码验证///<summary>/// 构造函数///</summary>///<param name="server">发件箱的邮件服务器地址</param>///<param name="toMail">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>///<param name="fromMail">发件人地址</param>///<param name="subject">邮件标题</param>///<param name="emailBody">邮件内容(可以以html格式进行设计)</param>///<param name="username">发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)</param>///<param name="password">发件人邮箱密码</param>///<param name="port">发送邮件所用的端口号(htmp协议默认为25)</param>///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>///<param name="pwdCheckEnable">true表示对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>public MyEmail(string server, string toMail, string fromMail, string subject, string emailBody, string username, string password, string port, bool sslEnable, bool pwdCheckEnable){try{mMailMessage = new MailMessage();mMailMessage.To.Add(toMail);mMailMessage.From = new MailAddress(fromMail);mMailMessage.Subject = subject;mMailMessage.Body = emailBody;mMailMessage.IsBodyHtml = true;mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;mMailMessage.Priority = MailPriority.Normal;this.mSenderServerHost = server;this.mSenderUsername = username;this.mSenderPassword = password;this.mSenderPort = Convert.ToInt32(port);this.mEnableSsl = sslEnable;this.mEnablePwdAuthentication = pwdCheckEnable;}catch (Exception ex){Console.WriteLine(ex.ToString());}}///<summary>/// 添加附件///</summary>///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>public void AddAttachments(string attachmentsPath){try{string[] path = attachmentsPath.Split(';'); //以什么符号分隔可以自定义Attachment data;ContentDisposition disposition;for (int i = 0; i < path.Length; i++){data = new Attachment(path[i], MediaTypeNames.Application.Octet);disposition = data.ContentDisposition;disposition.CreationDate = File.GetCreationTime(path[i]);disposition.ModificationDate = File.GetLastWriteTime(path[i]);disposition.ReadDate = File.GetLastAccessTime(path[i]);mMailMessage.Attachments.Add(data);}}catch (Exception ex){Console.WriteLine(ex.ToString());}}///<summary>/// 邮件的发送///</summary>public void Send(){try{if (mMailMessage != null){mSmtpClient = new SmtpClient();//mSmtpClient.Host = "smtp." + mMailMessage.From.Host;mSmtpClient.Host = this.mSenderServerHost;mSmtpClient.Port = this.mSenderPort;mSmtpClient.UseDefaultCredentials = false;mSmtpClient.EnableSsl = this.mEnableSsl;if (this.mEnablePwdAuthentication){System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);//mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);//NTLM: Secure Password Authentication in Microsoft Outlook ExpressmSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");}else{mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);}mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;mSmtpClient.Send(mMailMessage);}}catch (Exception ex){Console.WriteLine(ex.ToString());}}}
}

转载于:https://www.cnblogs.com/cxsabc/p/10627676.html

C#实现邮件发送的功能相关推荐

  1. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...

    本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能.分享给大家供大家参考,具体如下: 这里使用Python查询mysql数据库,并通过邮件发送宕机信息. Python代码如下: ...

  2. java web 邮件_JavaWeb实现邮件发送接收功能

    一.邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu. ...

  3. mysql自带的邮件发送功能_Python实现的查询mysql数据库并通过邮件发送信息功能...

    本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能.分享给大家供大家参考,具体如下: 这里使用Python查询mysql数据库,并通过邮件发送宕机信息. Python代码如下: ...

  4. C# Email邮件发送,功能是密码找回或者重置功能。

    最近根据公司需求,写个邮件发送.   这里面的传入的地址信息的参数都是经过加密的.  主要是保证用户信息的安全. 帮助类   1 using System; 2 using System.Collec ...

  5. java 邮件提醒功能_利用ical4j和javamail发送会议邀请实现邮件发送提醒功能

    /*** *@paramsenderAccount 发件人账号 *@paramsenderPassword 发件人密码 *@paramtoAddress 收件人邮箱地址 *@paramccAddres ...

  6. delphi XE7+ INDY 10.6测试邮件发送接收功能

    记录如下的关键地方,存档 xe7自带的indy 组件是10.6版本, 1. 接收邮件时, 如果邮箱容量超过2GB的话,idpop3的检查检索邮件数量的函数返回值就会出错. 今天2019.12.3在in ...

  7. 使用Spring实现邮件发送

    2019独角兽企业重金招聘Python工程师标准>>> 这两天写个小程序需要使用邮件发送的功能,在网上搜索了一帮子文章,感觉还是使用Spring的邮件发送功能比较方便,哈哈,懒人就这 ...

  8. 阿里云服务器邮件发送

    一个邮件发送的功能,本机调试无问题,但发布到阿里云服务器后邮件发送功能失败. 网上查了下大概是说阿里云把发送邮件的25端口禁用掉了 那么解决方式一就是向阿里云申请开放25端口,但具体如何申请,并未深入 ...

  9. 网上商城——邮件发送(一)

    最近在学习网上商城时,接触到了一个邮件发送的功能.之前一直在使用邮箱进行发送邮件,但是其中的具体如何运转的却不知道是怎么回事.那么邮件发送究竟是怎么一回事呢? 邮件发送过程: 过程描述:首先是发送人将 ...

最新文章

  1. 3名女研究生,状告哈佛!
  2. ClientDataSet 探讨
  3. Linux>软链接的作用与使用
  4. k8s kubectl run命令使用详解
  5. MongoDB Shell操作
  6. 虚拟主机 webdav php,ubuntu 搭建 webdav 文件服务器 及客户端配置 详解
  7. 5、SQL Server数据库、T-SQL
  8. JAVA中3种将byte转换为String的方法
  9. java设计模式模式组合_Java设计模式---组合模式
  10. 计算机专业及相关知识测试,计算机知识及测验考试.doc
  11. CVPR 2021最全论文开放下载!附pdf下载链接!
  12. 织梦DedeCMS列表页给推荐的文章添加推荐特荐图标
  13. mandriva urpm类命令
  14. 五子棋项目结束总结_五子棋比赛总结报告
  15. linux显卡驱动与opengl,NVIDIA率先发布OpenGL 3.0 Linux驱动
  16. Android跳转到手机自启动管理页面
  17. 新浪短链接 新浪t.cn短链接在线生成生成工具
  18. 战神笔记本电脑自带access吗_战神GX9系列超享windows10搭载微软office2016
  19. 弟子规python编程游戏_弟子规入则孝_读后感
  20. 方差分析介绍(结合COVID-19案例)

热门文章

  1. unable to locate package gparted
  2. ibernate 配置数据库方言
  3. 使用Jquery EasyUi常见问题解决方案
  4. 一个虚拟服务器装多个网站,一台虚拟主机 如何放多个网站
  5. vue引入id3_使用决策树ID3算法,预测收入是否大于50k
  6. fastdfs windows部署_从零搭建分布式文件系统MinIO比FastDFS要更合适
  7. 18岁参加工作,工龄30年
  8. 画面每秒传输帧数是什么意思
  9. 大家都是怎么过催收的生活?
  10. 人是不是不应该善良?