一些关于C#发送邮件的代码

33 篇文章 0 订阅
21 篇文章 0 订阅

1.命名空间 using System.Net.Mail;

2.创建一个MailMessage类的对象

  1. MailMessage mail = new MailMessage(); 
MailMessage mail = new MailMessage();

3.设置邮件的各种属性

 

//设置邮件的标题             

mail.Subject = "测试邮件";             

//设置邮件的发件人            

mail.From = new MailAddress("leowangzi@163.com","Leo");           

//设置邮件的收件人             

mail.To.Add(new MailAddress("lichao.wang@amusegroup.com","Daniel"));        

//设置邮件的抄送人             

mail.CC.Add(new MailAddress("nick.yin@amusegroup.com","Nick"));       

//设置邮件的内容             

mail.Body = "就是测试用";         

mail.Body = "就是测试用";            
 

//设置邮件的格式    

//设置邮件的格式            
mail.BodyEncoding = System.Text.Encoding.UTF8;         
mail.BodyEncoding = System.Text.Encoding.UTF8;            
 
mail.IsBodyHtml = true;        
mail.IsBodyHtml = true;            
 

设置邮件的发送级别         

设置邮件的发送级别            
  mail.Priority = MailPriority.Normal;        
mail.Priority = MailPriority.Normal;           
 

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;       

 mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;            
 

SmtpClient client = new SmtpClient();      

SmtpClient client = new SmtpClient();            
 

//设置用于 SMTP 事务的主机的名称,填IP地址也可以了         

//设置用于 SMTP 事务的主机的名称,填IP地址也可以了            
 

client.Host = "smtp.163.com";        

client.Host = "smtp.163.com";            
 

//设置用于 SMTP 事务的端口,默认的是 25         

//设置用于 SMTP 事务的端口,默认的是 25            
 

//client.Port = 25;     

//client.Port = 25;            
 

client.UseDefaultCredentials = false;        

client.UseDefaultCredentials = false;            
 

client.Credentials = new System.Net.NetworkCredential("leowangzi@163.com","*******");             

client.Credentials = new System.Net.NetworkCredential("leowangzi@163.com", "*******");            
 

client.DeliveryMethod = SmtpDeliveryMethod.Network;         

client.DeliveryMethod = SmtpDeliveryMethod.Network;            
 

//都定义完了,正式发送了!            client.Send(mail); 

//都定义完了,正式发送了!            client.Send(mail);

4.当需要发送多人时

string displayName = ""

string displayName = "";
string[] mailNames = (txtMailTo.Text +";").Split(';'); 
string[] mailNames = (txtMailTo.Text + ";").Split(';');
foreach (string namein mailNames) 
foreach (string name in mailNames)
  {   
      if (name !=string.Empty)     
{    if (name != string.Empty)    
       {        
            mail.To.Add(new MailAddress(name , displayName));  
      } 
{         mail.To.Add(new MailAddress(name , displayName));   }
  } 
}

5.当需要发送附件时

//设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中 
//设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
 

string fileName = txtUpFile.PostedFile.FileName.Trim(); 

string fileName = txtUpFile.PostedFile.FileName.Trim();
 

fileName = "D:/UpFile/" + fileName.Substring(fileName.LastIndexOf("/") + 1); 

fileName = "D:/UpFile/" + fileName.Substring(fileName.LastIndexOf("/") + 1);
 

txtUpFile.PostedFile.SaveAs(fileName);  

txtUpFile.PostedFile.SaveAs(fileName); 
 

// 将文件保存至服务器mail. 

// 将文件保存至服务器mail.
 

Attachments.Add(new Attachment(fileName)); 

Attachments.Add(new Attachment(fileName));


6.也可以这么发送附件

//Attachment 

            string strFilePath = @"C:\test.jpg"

            Attachment at = new Attachment(strFilePath); 

            at.Name = System.IO.Path.GetFileName(strFilePath); 

            at.NameEncoding = System.Text.Encoding.GetEncoding("gb2312"); 

            at.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 

            at.ContentDisposition.Inline = true

            at.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Inline; 

            string cid = at.ContentId; 

            mail.Attachments.Add(at); 

//Attachment
            string strFilePath = @"C:\test.jpg";
            Attachment at = new Attachment(strFilePath);
            at.Name = System.IO.Path.GetFileName(strFilePath);
            at.NameEncoding = System.Text.Encoding.GetEncoding("gb2312");
            at.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
            at.ContentDisposition.Inline = true;
            at.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Inline;
            string cid = at.ContentId;
            mail.Attachments.Add(at);

7.另外的说明

●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方法发送就可以了


8.关于HTML

  1. HTML格式邮件中,嵌入图片资源
  2. 要求收到后,发送回执给你
  3. 如果邮件发送失败, 发送错误通知邮件给你
  4. 支持 HTML/plain text 双格式的邮件, 收件端可以自行切换
  5. 自定义邮件头
  6. 异步发送, 支持取消发送
  7. 邮件回执, 支持 Lotus Notes 的 domino server
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = false;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Host = "smtp.163.com";
smtp.Credentials = new NetworkCredential("三角猫@163.com", "这是密码");

MailMessage mm = new MailMessage();
mm.From = new MailAddress("三角猫@163.com", "三角猫", Encoding.GetEncoding(936));
mm.To.Add("三角猫@gmail.com");

mm.SubjectEncoding = Encoding.GetEncoding(936);
mm.Subject = "三角猫发的测试邮件,呵呵";

mm.BodyEncoding = Encoding.GetEncoding(936);

普通文本邮件内容,如果对方的收件客户端不支持HTML,这是必需的
string plainTextBody = "如果你邮件客户端不支持HTML格式,或者你切换到“普通文本”视图,将看到此内容";
mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain"));

HTML格式邮件的内容
string htmlBodyContent = "如果你的看到<b>这个</b>, 说明你是在以 <span style=\"color:red\">HTML</span> 格式查看邮件<br><br>";
htmlBodyContent += "<a href=\"http://www.zu14.cn/\">真有意思网</a> <img src=\"cid:weblogo\">";   //注意此处嵌入的图片资源
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html");

处理嵌入图片
LinkedResource lrImage = new LinkedResource(@"d:\blogo.gif", "image/gif");
lrImage.ContentId = "weblogo"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid:  ,如果设置不正确,请不会显示图片
htmlBody.LinkedResources.Add(lrImage);

mm.AlternateViews.Add(htmlBody);

要求回执的标志
mm.Headers.Add("Disposition-Notification-To", "接收回执的邮箱@163.com");

自定义邮件头
mm.Headers.Add("X-Website", "http://www.zu14.cn/");

针对 LOTUS DOMINO SERVER,插入回执头
mm.Headers.Add("ReturnReceipt", "1");

mm.Priority = MailPriority.Normal; //优先级
mm.ReplyTo = new MailAddress("回复邮件的接收地址@yahoo.com.cn", "我自己", Encoding.GetEncoding(936));

如果发送失败,SMTP 服务器将发送 失败邮件告诉我
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

异步发送完成时的处理事件
smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);

开始异步发送
smtp.SendAsync(mm, null);
void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                MessageBox.Show("发送被取消");
            }
            else
            {
                if (e.Error == null)
                {
                    MessageBox.Show("发送成功");
                }
                else
                {
                    MessageBox.Show("发送失败: " + e.Error.Message);
                }
            }
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值