using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;
using System.Net.Mime;
using System.Net;
using System.IO; namespace TestForm
{
class Email
{
string smtpHost = string.Empty;
string Sendmailaddress = string.Empty;
string Sendpassword = string.Empty;
string SendDisplayname = string.Empty;
string Recevivemailaddress = string.Empty;
string ReceviveDisplayname = string.Empty; /// <summary>
///
/// </summary>
/// <param name="host">主机号</param>
/// <param name="sendmailaddress">发送人邮箱地址</param>
/// <param name="sendpassword">发送邮箱密码</param>
/// <param name="sendDisplayname">发送人显示名称</param>
/// <param name="recevivemailaddress">接收人邮箱地址</param>
/// <param name="receviveDisplayname">接收人显示名称</param>
public Email(string host, string sendmailaddress, string sendpassword, string sendDisplayname, string recevivemailaddress, string receviveDisplayname)
{
smtpHost = host;
Sendmailaddress = sendmailaddress;
Sendpassword = sendpassword;
SendDisplayname = sendDisplayname;
Recevivemailaddress = recevivemailaddress;
ReceviveDisplayname = receviveDisplayname;
} /// <summary>
/// 发送邮件功能
/// </summary>
/// <param name="mailsubject">邮件标题</param>
/// <param name="mailbody">邮件主要内容</param>
/// <param name="isadddocument">是否添加附件</param>
/// <param name="documentpath">添加附件的文件路径列表</param>
/// <returns></returns>
public bool Sendmail(string mailsubject, string mailbody, bool isadddocument, List<string> documentpath)
{
bool sendstatus = false;
try
{
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(smtpHost); //确定smtp服务器地址。实例化一个Smtp客户端
MailAddress from = new MailAddress(Sendmailaddress, SendDisplayname, Encoding.UTF8);//构造一个发件人地址对象
MailAddress to = new MailAddress(Recevivemailaddress, ReceviveDisplayname, Encoding.UTF8);//构造一个收件人地址对象
MailMessage message = new MailMessage(from, to);//构造一个Email的Message对象 message.Subject = mailsubject;
message.SubjectEncoding = Encoding.UTF8;
message.Body = mailbody;
message.BodyEncoding = Encoding.UTF8; //设置邮件的信息
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = false; //如果服务器支持安全连接,则将安全连接设为true。
//如果是gmail则一定要将其设为true
if (smtpHost == "smpt.gmail.com")
client.EnableSsl = true;
else
client.EnableSsl = false; if (isadddocument == true)
{
AddDocument(message, documentpath);
}
client.UseDefaultCredentials = false;
//用户登陆信息
NetworkCredential myCredentials = new NetworkCredential(Sendmailaddress, Sendpassword);
client.Credentials = myCredentials;
//发送邮件
client.Send(message);
sendstatus = true;
}
catch { }
return sendstatus;
} /// <summary>
/// 添加附件功能
/// </summary>
/// <param name="message">Mailmessage对象</param>
/// <param name="Documentpath">附件路径列表</param>
private void AddDocument(MailMessage message, List<string> Documentpath)
{
foreach(string filepath in Documentpath)
{
try
{
if (File.Exists(filepath)) //判断文件是否存在
{
Attachment attach = new Attachment(filepath); //构造一个附件对象
ContentDisposition disposition = attach.ContentDisposition; //得到文件的信息
disposition.CreationDate = System.IO.File.GetCreationTime(filepath);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(filepath);
disposition.ReadDate = System.IO.File.GetLastAccessTime(filepath);
message.Attachments.Add(attach); //向邮件添加附件
}
}
catch { }
}
}
}
}

C#实现发送邮件的更多相关文章

  1. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  2. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  3. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  4. 技术笔记:Indy控件发送邮件

    工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...

  5. mono中发送邮件并保存本次收件人的地址

    在ios端mono开发中,发送邮件可以选择调用ios原生email程序.有两种方式实现这种功能,一是程序跳转到ipad中email程序,另外一种是将发送邮件的界面在自己应用里弹出. 首先第一种方式的代 ...

  6. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  7. 使用nodemailer发送邮件

    今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...

  8. ASP.NET MVC 发送邮件(异步)

    最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...

  9. MVC5发送邮件注册

    #region 发送邮件 //填写电子邮件地址,和显示名称 System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(&qu ...

  10. ASP.NET用QQ,网易发送邮件以及添加附件

    教程:ASP.NET用QQ,网易发送邮件以及添加附件 这是我用QQ邮箱出现的异常: 命令顺序不正确. 服务器响应为:Error: need EHLO and AUTH first !无法从传输连接中读 ...

随机推荐

  1. Python 日期格式化 及 schwartzian排序

    __author__ = 'root' import datetime import time import copy # 12/Dec/2012:23:59:50 # 12/Sep/2012:23: ...

  2. 以Facebook为案例剖析科技公司应有的工具文化

    http://www.36kr.com/p/146507.html 编者按:本文由 @王淮Harry哥 撰写,摘自他即将出版的新书.王淮是 Facebook 早期员工,中国藉第二位工程师第一位研发经理 ...

  3. MySql密码丢失

     windows下mysql密码忘记了 第一步:netstat -nat(可以查看mysql是否启动了,如果启动了,可以用输入net stop mysql(或者通过任务管理器结束进程)) 第二步:my ...

  4. bzoj1146

    这是一道无比繁琐的题目话说这道题使我第一次练dfs序,比较感动:首先dfs序就是在dfs过程中按照访问的顺序给每个点标上两个“时间戳”一个是第一次访问到点i时的时间戳c[i],一个是访问完以i为根时的 ...

  5. -_-#【JS】isFinite

    /** * isFinite(number) * 检查是否是无穷大 * 如果 number 是有限数字(或可转换为有限数字),那么返回 true * 如果 number 是 NaN(非数字),或者是正 ...

  6. matlab制造一个64*64的仿真数据

    fid = fopen('test_001.img','w'); r=random('Normal',100,0,64,64); z=random('Uniform',0,5,64,64); %%%% ...

  7. 快速傅里叶变换(FFT):COGS 2216. 你猜是不是KMP

    2216. 你猜是不是KMP ★★★☆   输入文件:guess.in   输出文件:guess.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] XX在玩两个串的游戏. ...

  8. MVVM模式中WPF数据的完全绑定

    一:截图,描述:将后台代码的姓名.年龄绑定到文本框,单击”增加年龄“--年龄自+1,单击”显示年龄“--弹出年龄的显示对话框,实现了从文本框修改年龄和后台更改年龄并显示到文本框 运行结果和解决方案管理 ...

  9. WPF的登录界面的排版

    一:截图 二:XAML代码 <Window x:Class="wpf练习.登录窗体" xmlns="http://schemas.microsoft.com/win ...

  10. 【OSGi】OSGi生命周期

    1 生命周期管理 对于非模块化应用,生命周期将应用作为一个整体来操作: 而对于模块化应用,则可以以细粒度的方式来管理应用的某一个独立部分. OSGi生命周期管理 OSGi生命周期层有两种不同的作用: ...