对比网站,个人备案网站百度收录,火龙二合一版本手游传奇,crm系统设计因项目业务需要#xff0c;需要做一个发送邮件功能#xff0c;查了下资料#xff0c;整了整#xff0c;汇总如下#xff0c;亲测可用#xff5e; QQ邮箱发送邮件 #region 发送邮箱try{MailMessage mail new MailMessage();MailAddress from new MailAddress(发件… 因项目业务需要需要做一个发送邮件功能查了下资料整了整汇总如下亲测可用 QQ邮箱发送邮件 #region 发送邮箱try{MailMessage mail new MailMessage();MailAddress from new MailAddress(发件人邮箱, 工程管理平台, System.Text.Encoding.GetEncoding(GB2312));//邮件的发件人mail.From from;MailAddress to new MailAddress(收件人邮箱);//设置邮件的收件人mail.To.Add(to);mail.Subject 收款确认;string url http://wwww.baidu.com;mail.Body 您好有新的待确认收款 url;mail.IsBodyHtml true;//HTML格式内容可以包含HMTL标签和超链接uuu mail.BodyEncoding System.Text.Encoding.GetEncoding(GB2312);//设置邮件的格式mail.Priority MailPriority.Normal;//设置邮件的发送级别mail.DeliveryNotificationOptions DeliveryNotificationOptions.OnSuccess;SmtpClient client new SmtpClient();//邮件发送服务器//client.Port 25; QQ发送邮件不用设置client.Host smtp.qq.com; //发件人地址所在的服务器SMTP 如网易126邮箱的为smtp.126.comclient.EnableSsl true;client.UseDefaultCredentials false; //设置用于 SMTP 事务的端口默认的是 25client.Credentials new System.Net.NetworkCredential(发件人邮箱, 授权码);//发件人邮箱登陆名和密码生成的授权码client.DeliveryMethod SmtpDeliveryMethod.Network;try{client.Send(mail);//发送邮件MessageShow(发送成功);Response.Write(script languagejavascriptalert(发送成功);/script);}catch (System.Net.Mail.SmtpException ex){MessageShow(ex.Message);}}catch (Exception ex){throw ex;}#endregion 效果 注意 重要引用 using System.Net.Mail; 其中使用QQ发送邮件需要使用授权码而不是QQ密码授权码具体生成方式可以查看http://service.mail.qq.com/cgi-bin/help?subtype1no1001256id28 自定义发送邮件 附帮助类的发送邮件方式推荐此种方式更灵活 邮件帮助类 1 #region 邮件帮助类2 /// summary3 /// 邮件帮助类4 /// /summary5 public static class SendMailHelper6 {7 /// summary8 /// 发送邮件9 /// /summary10 /// param namerequest邮件内容对象/param11 /// returns发送邮件所遇到的异常/returns12 public static string SendMail(MailRequest request)13 {14 try15 {16 MailMessage mail new MailMessage();17 18 if (string.IsNullOrEmpty(request.From))19 {20 request.From ConfigurationManager.AppSettings[DefaultMailFrom];21 }22 mail.From new MailAddress(request.From);23 24 PaserMailAddress(request.To, mail.To);25 PaserMailAddress(request.CC, mail.CC);26 PaserMailAddress(request.Bcc, mail.Bcc);27 28 mail.Subject request.Subject;29 mail.SubjectEncoding System.Text.Encoding.UTF8;30 mail.Body request.Body;31 mail.ReplyTo new MailAddress(request.From);32 mail.IsBodyHtml true;33 34 if (request.Attachments ! null request.Attachments.Length 0)35 {36 for (int i 0; i request.Attachments.Length; i)37 {38 Attachment mailAttach new Attachment(ByteArrayToStream(request.Attachments[i].FileData), request.Attachments[i].FileName);39 40 mail.Attachments.Add(mailAttach);41 }42 }43 44 if (string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings[SMTPSERVER_Show]))45 {46 throw new ApplicationException(邮件服务无效);47 }48 49 //Smtp Server50 SmtpClient mailClient new SmtpClient(ConfigurationManager.AppSettings[SMTPSERVER_Show]);51 52 if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings[SMTPSERVERPORT]))53 {54 //端口号55 try56 {57 mailClient.Port Int32.Parse(ConfigurationManager.AppSettings[SMTPSERVERPORT]);58 }59 catch60 {61 return SMTP服务器端口设置错误端口必须设置为数值型;62 }63 }64 65 if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings[MAILUSER_Show]))66 {67 mailClient.Credentials new System.Net.NetworkCredential(ConfigurationManager.AppSettings[MAILUSER_Show], ConfigurationManager.AppSettings[MAILUSERPW_Show]);68 mailClient.DeliveryMethod SmtpDeliveryMethod.Network;69 }70 else71 {72 mailClient.Credentials CredentialCache.DefaultNetworkCredentials;73 }74 75 mailClient.Send(mail);76 mail.Dispose();77 78 return string.Empty;79 }80 catch (SmtpFailedRecipientsException e)81 {82 return e.Message;83 }84 catch (SmtpFailedRecipientException e)85 {86 return e.Message;87 }88 catch (SmtpException e)89 {90 return e.Message;91 }92 catch (Exception e)93 {94 return e.Message;95 }96 }97 98 /// summary99 /// 解析分解邮件地址
100 /// /summary
101 /// param namemailAddress邮件地址/param
102 /// param namemailCollection邮件对象/param
103 private static void PaserMailAddress(string mailAddress, MailAddressCollection mailCollection)
104 {
105 if (string.IsNullOrEmpty(mailAddress))
106 {
107 return;
108 }
109
110 char[] separator new char[2] { ,, ; };
111 string[] addressArray mailAddress.Split(separator);
112
113 foreach (string address in addressArray)
114 {
115 if (address.Trim() string.Empty)
116 {
117 continue;
118 }
119
120 mailCollection.Add(new MailAddress(address));
121 }
122 }
123
124 /// summary
125 /// 字节数组转换为流
126 /// /summary
127 /// param namebyteArray字节数组/param
128 /// returnsStream/returns
129 private static Stream ByteArrayToStream(byte[] byteArray)
130 {
131 MemoryStream mstream new MemoryStream(byteArray);
132
133 return mstream;
134 }
135 }
136 #endregion View Code 补充上述帮助类中还需要添加 MailRequest.cs 类发送请求相关类 和 MailRequestAttachments.cs 类附件类 MailRequest.cs 类 using System;
using System.Collections.Generic;
using System.Text;namespace SyncAdData.DBHelper
{/// summary/// 发送邮件请求/// /summarypublic class MailRequest{#region PrivateFields/// summary/// 文件名/// /summaryprivate string _fromField;/// summary/// 返送到/// /summaryprivate string _toField;/// summary/// 抄送/// /summaryprivate string _copyField;/// summary/// 附件/// /summaryprivate string _bccField;/// summary/// 标题/// /summaryprivate string _subjectField;/// summary/// 发送人名/// /summaryprivate string _bodyField;/// summary/// 类容/// /summaryprivate MailRequestAttachments[] _attachmentsField;#endregion/// summary/// 发送人多个人以分号;间隔/// /summarypublic string From{get{return this._fromField;}set{this._fromField value;}}/// summary/// 收件人多个人以分号;间隔/// /summarypublic string To{get{return this._toField;}set{this._toField value;}}/// summary/// 抄送人多个人以分号;间隔/// /summarypublic string CC{get{return this._copyField;}set{this._copyField value;}}/// summary/// 秘密抄送人多个人以分号;间隔/// /summarypublic string Bcc{get{return this._bccField;}set{this._bccField value;}}/// summary/// 主题/// /summarypublic string Subject{get{return this._subjectField;}set{this._subjectField value;}}/// summary/// 内容/// /summarypublic string Body{get{return this._bodyField;}set{this._bodyField value;}}/// summary/// 附件列表/// /summarypublic MailRequestAttachments[] Attachments{get{return this._attachmentsField;}set{this._attachmentsField value;}}}
} View Code MailRequestAttachments.cs 类 using System;
using System.Collections.Generic;
using System.Text;namespace SyncAdData.DBHelper
{/// summary/// 发送邮件请求附件/// /summarypublic class MailRequestAttachments{#region PrivateFields/// summary/// 文件名/// /summaryprivate string _fileNameField;/// summary/// 文件内容/// /summaryprivate byte[] _fileDataField;#endregion/// summary/// 文件名/// /summarypublic string FileName{get{return this._fileNameField;}set{this._fileNameField value;}}/// summary/// 文件内容/// /summarypublic byte[] FileData{get{return this._fileDataField;}set{this._fileDataField value;}}}
} View Code 需要的命名空间 using System;
using System.Reflection;
using System.Net.Mail;
using System.Web.Configuration;
using System.Net;
using System.IO; 其中 帮助类中的服务器地址 和 账号 密码需要在配置文件中配置 add keySMTPSERVER value邮件服务器/add keyMAILUSER value账号/add keyMAILUSERPW value密码/ 前台调用 /// summary/// 发送邮件/// /summary/// param nameStrUrl根据业务需要这里我需要传入几个拼接后的id值/param/// param namebid根据业务需要这里我传的批次id/param/// param nameshowemail根据业务需要这里我传入的是查询出来的收件人邮箱如果是固定的更好可以直接写死或者写成配置文件/paramprivate void Send(string StrUrl,string bid,string showemail){ #region 读取配置发送邮件string url http://localhost:9998/FinanceManage/CollectionManage/ConfirmCollection_Receipt.aspx?MenuID14010600id StrUrl batchID bid ;string body 您好有新的待确认收款≥ url;//string bcc string.Empty;string to v-zhangxy52vanke.com;//收件人//string cc ;//抄送人MailRequest mail new MailRequest();mail.Subject 收款确认;//主题mail.Body body;//内容// mail.Bcc bcc;//秘密抄送人mail.From v-tangqq02vanke.com;//发送人mail.To to; //收件人// mail.CC cc; //抄送人string sendMainResult -1;if (!string.IsNullOrEmpty(mail.To.Trim()) || !string.IsNullOrEmpty(mail.CC.Trim())){sendMainResult SendMailHelper.SendMail(mail);if (string.IsNullOrEmpty(sendMainResult)){BaseClass.CommFun.Alert(this.up_innerCheck, 发送成功, Page);}}#endregion } 效果 点击确定发送之后查看邮箱即可看到发送内容(可根据业务需求自行调整) 刚好另一个项目中也需要用到发邮件也是用的上述的帮助类附效果图 至此发送邮件功能已经全部完毕当中不乏可以优化的地方欢迎大家自行优化相互交流 转载于:https://www.cnblogs.com/zhangxiaoyong/p/6117848.html