平台之大势何人能挡? 带着你的Net飞奔吧!
邮箱系列:
1.QQ邮箱:
他生成的是:
后来我把后面加密字符串换成明文的邮箱==》发现一样用 :
代码案例:
官方生成代码:(其实就是把你的邮件加了下密) 逆天通用土方法:(邮件可以任意替换) 邮我
效果:
订阅系列可以参考:
——————————————————————————————————————————————————————————————————————————————————————————————
邮件发送的前提设置:
QQ邮箱设置
授权码生成:
2.邮件案例:
简单熟悉邮件系列:
代码示例:
#region 附件路径 ////// 附件路径 /// public static ListfilePathList = new List (); #endregion #region 文件上传 /// /// LoTUploader-文件上传 /// ///public JsonResult FileUpload(System.Web.HttpPostedFileBase file) { if (file == null) { return Json(new { status = false, msg = "文件提交失败" }); } if (file.ContentLength > 10485760) { return Json(new { status = false, msg = "文件10M以内" }); } string filterStr = ".gif,.jpg,.jpeg,.bmp,.png|.rar,.7z,.zip"; string fileExt = Path.GetExtension(file.FileName).ToLower(); if (!filterStr.Contains(fileExt)) { return Json(new { status = false, msg = "请上传图片或压缩包" }); } //防止黑客恶意绕过,判断下文件头文件 if (!file.InputStream.CheckingExt("7173", "255216", "6677", "13780", "8297", "55122", "8075")) { //todo:一次危险记录 return Json(new { status = false, msg = "请上传图片或压缩包" }); } //todo: md5判断一下文件是否已经上传过,如果已经上传直接返回 return Json(new { status = true, msg = sqlPath }); string path = string.Format("{0}/{1}", "/lotFiles", DateTime.Now.ToString("yyyy-MM-dd")); string fileName = string.Format("{0}{1}", Guid.NewGuid().ToString("N"), fileExt); string sqlPath = string.Format("{0}/{1}", path, fileName); string dirPath = Request.MapPath(path); if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); } try { file.SaveAs(Path.Combine(dirPath, fileName)); file.InputStream.Dispose(); filePathList.Add(Path.Combine(dirPath, fileName)); } catch { return Json(new { status = false, msg = "文件保存失败" }); } return Json(new { status = true, msg = sqlPath }); } #endregion #region 发邮件 /// /// 发邮件 /// /// ///public async Task SendMsg(MailModel model) { var obj = new AjaxOption
3.项目应用:
其实项目里面基本上是不用他附件功能的,比如你注册的时候发一个邮件给你来激活,你敏感操作的时候给你一个提示(比如异地登陆或者修改密码)
简单封装了一个api,一般每个项目里面都有这个发邮件的功能,很多公司把这些诸如上传,发邮件,短信通知的功能都封装成api,用的时候调用一下就可以了
效果图就不贴了,和上面差不多,就是没上传附件了
#region 发邮件 ////// 发邮件 /// /// ///[CrossSite] public async Task Post([FromUri]MailModel model) { var obj = new AjaxOption
邮件系列
EmailHelper:
using System.Net.Mail;using System.Configuration;using System.Threading.Tasks;using System.Collections.Generic;#region MailModel////// MailModel/// public class MailModel{ ////// 邮箱主题 /// public string MailSubject { get; set; } ////// 邮箱内容 /// public string MailContent { get; set; } ////// 收件人邮箱 /// public ListMailToList { get; set; } /// /// 抄送人邮箱 /// public ListMailCCList { get; set; } /// /// 附件路径 /// public ListAttachmentList { get; set; }}#endregionpublic class EmailHelper{ private static string mailFrom = ConfigurationManager.AppSettings["EmailForm"]; //登陆用户名 private static string mailPass = ConfigurationManager.AppSettings["EmailPass"]; //登陆密码 private static string mailSmtp = ConfigurationManager.AppSettings["EmailSmtp"]; //SMTP服务器 #region 发送邮件 /// /// 发送邮件 /// /// 邮箱主题 /// 邮箱内容 /// 收件人邮箱 /// 抄送人邮箱 /// 附件路径 ///返回发送邮箱的结果 public static async TaskSendAsync(MailModel model) { #region 基本校验(一般都是调用前就验证了) //if (model == null || string.IsNullOrWhiteSpace(model.MailSubject) || string.IsNullOrWhiteSpace(model.MailContent) || model.MailTo == null) //{ // return false; //} #endregion //邮件服务设置 using (var smtpClient = new SmtpClient()) { smtpClient.Host = mailSmtp; //指定SMTP服务器 smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, mailPass); //用户名和密码 using (var mailMsg = new MailMessage()) { //发信人邮箱 mailMsg.From = new MailAddress(mailFrom); //收件人邮箱 foreach (var item in model.MailToList) { mailMsg.To.Add(item); } //抄送人邮箱 if (model.MailCCList != null && model.MailCCList.Count > 0) { foreach (var item in model.MailCCList) { mailMsg.CC.Add(item); } } //附件系列 if (model.AttachmentList != null) { foreach (var item in model.AttachmentList) { try { mailMsg.Attachments.Add(new Attachment(item)); } catch (System.Exception ex) { } } } mailMsg.Subject = model.MailSubject; //主题 mailMsg.Body = model.MailContent; //内容 mailMsg.BodyEncoding = System.Text.Encoding.UTF8; //编码 mailMsg.IsBodyHtml = true; //HTML格式 try { await smtpClient.SendMailAsync(mailMsg); //发送邮件 return true; } catch (System.Exception ex) { mailMsg.Dispose(); smtpClient.Dispose(); return false; } } } } #endregion}
如果没有账号,我提供几个测试账号:
mail.host = smtp.163.com
mail.username = php_tester@163.commail.password = php1234mail.smtp.from = php_tester@163.commail.smtp.auth = true——————————————————
mail.host=smtp.yeah.net
mail.port=25mail.smtp.auth=truemail.smtp.timeout=25000mail.username=techblog@yeah.netmail.password=2436chao——————————————————
mail.server.host=smtp.yeah.net
mail.server.post=25mail.server.validate=truemail.server.username=zmc330563778mail.server.password=zmc586858mail.server.fromaddress=zmc330563778@yeah.net