利用C#邮件发送邮箱使用到两个类SmtpClient和MailMessage。可以把SmtpClient看做发送邮件信息的客户端,而把MailMessage看做需要发送的消息。

下面是我写的发送邮件的公共方法:

  /// <summary>
///
/// </summary>
/// <param name="ServerIP">发送邮件服务器ip或者域名</param>
/// <param name="ServerPort">服务器端口</param>
/// <param name="UserName">发件人的账号</param>
/// <param name="Password">发件人的密码</param>
/// <param name="FromAddress">发件人的邮箱地址</param>
/// <param name="FromAddressName">发件人名称</param>
/// <param name="Subject">主题</param>
/// <param name="Body">正文</param>
/// <param name="ToAddressList">收件人集合</param>
/// <param name="CCAddressList">副本收件人集合</param>
/// <param name="BccAddressList">密件抄送收件人集合</param>
/// <param name="IsHtml">正文是否可以使用html标签</param>
/// <param name="AttachMentFileList">附件</param>
/// <param name="MailPriority">发送邮件的优先级 三个选项:低 中 高</param>
/// <returns></returns>
public String SendMail(string ServerIP, int? ServerPort, string UserName, string Password, string FromAddress, string FromAddressName, string Subject, string Body, List<string> ToAddressList, List<string> CCAddressList, List<string> BccAddressList, bool IsHtml, List<AttachmentFile> AttachMentFileList, MailPriority MailPriority)
{
try
{
if (string.IsNullOrEmpty(ServerIP))
{
return "ServerIP 不能为空!";
} SmtpClient mSmtpClient = new SmtpClient(ServerIP); //申明SmtpClient对象
System.Net.Mail.MailMessage mMailMessage = new System.Net.Mail.MailMessage(); //申明MailMessage对象 if (ServerPort != null)
{
mSmtpClient.Port = (int)ServerPort;
} if (String.IsNullOrEmpty(FromAddress))
{
return "发件人不能为空";
} if (string.IsNullOrEmpty(FromAddressName))
{
mMailMessage.From = new MailAddress(FromAddress);
}
else
{
mMailMessage.From = new MailAddress(FromAddress, FromAddressName);
} if (string.IsNullOrEmpty(Subject))
{
return "主旨不能为空!";
} if (ToAddressList == null || ToAddressList.Count() == )
{
return "收件人不能为空!";
} // mSmtpClient.UseDefaultCredentials = false;
mSmtpClient.Credentials = new NetworkCredential(UserName, Password); //设置发送人的邮箱账号和密码,163邮箱有设置授权码
mSmtpClient.EnableSsl = true; //启用ssl,也就是安全发送 foreach (var item in ToAddressList) //收件者
{
mMailMessage.To.Add(item);
}
if (CCAddressList != null && CCAddressList.Count() != )
{
foreach (var item in CCAddressList) //副本
{
mMailMessage.CC.Add(item);
}
} if (BccAddressList != null && BccAddressList.Count() != )
{
foreach (var item in BccAddressList) //密件抄送人员
{
mMailMessage.Bcc.Add(item);
}
} mMailMessage.Subject = Subject;
mMailMessage.IsBodyHtml = IsHtml; //正文是否使用html标签展示
mMailMessage.Body = Body; //正文
mMailMessage.BodyEncoding = System.Text.Encoding.UTF8; //正文的编码原则
mMailMessage.Priority = MailPriority; //优先级 if (AttachMentFileList != null && AttachMentFileList.Count() != ) //判断是否有附件
{
foreach (var item in AttachMentFileList)
{
Attachment mAttachment = new Attachment(item.FilePath); //添加文件的文职
mAttachment.Name = item.FileName;//附件显示的文件名称
mAttachment.NameEncoding = System.Text.Encoding.UTF8;
mAttachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
mAttachment.ContentDisposition.Inline = true;
mAttachment.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;
mMailMessage.Attachments.Add(mAttachment);
}
} mSmtpClient.Send(mMailMessage);
return "发送成功!"; }
catch (Exception ex)
{
return ex.Message;
}
} public string SendMail(String ServerIP, string UserName, string Password, string FromAddress, string FromAddressName, string Subject, string Body, List<string> ToAddressList)
{
return SendMail(ServerIP, null, UserName, Password, FromAddress, FromAddressName, Subject, Body, ToAddressList, null, null, false, null, MailPriority.Normal);
}
}
public class AttachmentFile
{
/// <summary>
/// 文件路径
/// </summary>
public string FilePath { get; set; }
/// <summary>
///附件显示的文件明
/// </summary>
public string FileName { get; set; }
}

上面的代码可以直接使用。基本的方法都有,在这儿需要说明下AttachmentFile类是我用于发送文件的时候可以重新命名文件名。

注意:大家在使用的时候注意一下参数UserName和Password,在这儿我以我163的邮箱为例,解释下这两个参数的作用。

在使用163邮箱服务器发送信息时需要按照图片上的操作开启客户端授权密码,上面的UserName和Password就是我们的邮箱地址和授权码。至于QQ邮箱我有试验过,但是就是无法发送邮件,至于你们说的开启POP3和SMTP的选项,我也已经开启了,如果知道一些原因的话,可以在下面留言告诉我!感激!

希望能帮到大家!

												

C# 发送email邮件!的更多相关文章

  1. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

  2. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  3. 【转】C#发送Email邮件

    转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...

  4. python 发送email邮件带附件

    EMAIL功能实现: 1.发送EMAIL带附件,并且带压缩文件夹做为附件 #_*_coding:utf-8_*_ import smtplib from email.mime.text import ...

  5. Oracle PLSQL通过SMTP发送E-MAIL邮件代码

    登录到SMTPserver发送邮件,支持HTML CREATE OR REPLACE PROCEDURE send_mail(        p_recipient VARCHAR2, -- 邮件接收 ...

  6. ThinkPHP使用PHPmailer发送Email邮件

    下面介绍thinkphp如何使用phpmailer发送邮件,使用这个邮件发送类,配置好参数后,一句话即可发送邮件.仅适合于thinkphp框架. 第一步,下载类库 将Mail.class.php复制到 ...

  7. 用java发送email邮件例子

    package com.hzk.mail; import java.net.MalformedURLException; import java.net.URL; import java.text.S ...

  8. Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...

  9. springboot发送email邮件

    添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

随机推荐

  1. centos7安装redis的正确姿势

    目前redis5已经发布,Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本.按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的 ...

  2. 运行vb写的程序,有些电脑上会弹出一个与office相关的窗口

    到网上搜索了一下,找了几个解决方案,不过我的电脑上没出现过,所以先收藏一下,或许以后能用上. 来自:http://bbs.csdn.net/topics/380204412 今天将注册表的项一个个删除 ...

  3. python(六)——基本数据类型介绍

    1.数字整形 python3不管数字有多大都是int型,没有long类型 1>字符串转换为数字 s1 = " print(type(s1),s1) b = int(s1)#不加base ...

  4. Linux:echo中,>和>>的区别(保存结果和追加结果)

    在Linux中,对于echo命令,保存文件时,">"和">>"是有区别的: 假如有A_R1,B_R2,C_R1三个字符 for i in `l ...

  5. 2018.9青岛网络预选赛(B)

    传送门:Problem(B) https://www.cnblogs.com/violet-acmer/p/9664805.html 参考资料: https://blog.csdn.net/qq_40 ...

  6. P4315 月下“毛景树”

    P4315 月下"毛景树" 题目描述 毛毛虫经过及时的变形,最终逃过的一劫,离开了菜妈的菜园. 毛毛虫经过千山万水,历尽千辛万苦,最后来到了小小的绍兴一中的校园里. 爬啊爬~爬啊爬 ...

  7. 使用swagger来编写在线api文档

    swagger是一个非常简单,强大的框架.快速上手,只需要引入jar包 , 使用注解就可以生成一个漂亮的在线api文档 pom.xml <dependency> <groupId&g ...

  8. 虚拟机下安装ubuntu后root密码登录失败的问题

    问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会输入一个自己的网名或绰号之类的,密码也在这时设置过了. 但是当安装成功之后,使用命令#su root,然后输入刚才设置的密码, ...

  9. 版本管理——git

    一.git简介 git是一个 分布式版本控制系统 ,学习git之前首先要了解什么是分布式版本控制系统. 集中式版本控制:版本库集中存放在中央服务器,我们工作的时候先从中央服务器获取最新版本,干完活后把 ...

  10. Spark简介安装和简单例子

    Spark简介安装和简单例子 Spark简介 Spark是一种快速.通用.可扩展的大数据分析引擎,目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark S ...