C# Email邮件发送功能 找回或重置密码功能

最近根据公司需求,写个邮件发送。这里面的传入的地址信息的参数都是经过加密的,主要是保证用户信息的安全。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Web;

namespace CalslNum.Helper
{
 /// <summary>
 ///发送邮件类
 /// </summary>
 public class MailService
 {
  /// <summary>
  /// 发送邮件程序调用方法 SendMail("abc@126.com", "某某人", "cba@126.com", "你好", "我测试下邮件", "邮箱登录名", "邮箱密码", "smtp.126.com", true,);
  /// </summary>
  /// <param name="from">发送人邮件地址</param>
  /// <param name="fromname">发送人显示名称</param>
  /// <param name="to">发送给谁(邮件地址)</param>
  /// <param name="subject">标题</param>
  /// <param name="body">内容</param>
  /// <param name="username">邮件登录名</param>
  /// <param name="password">邮件密码</param>
  /// <param name="server">邮件服务器 smtp服务器地址</param>
  /// <param name= "IsHtml "> 是否是HTML格式的邮件 </param>
  /// <returns>send ok</returns>
  public static bool SendMail(string from, string fromname, string to, string subject, string body, string server, string username, string password, bool IsHtml)
  {
   //邮件发送类
   MailMessage mail = new MailMessage();
   try
   {
    //是谁发送的邮件
    mail.From = new MailAddress(from, fromname);
    //发送给谁
    mail.To.Add(to);
    //标题
    mail.Subject = subject;
    //内容编码
    mail.BodyEncoding = Encoding.Default;
    //发送优先级
    mail.Priority = MailPriority.High;
    //邮件内容
    mail.Body = body;
    //是否HTML形式发送
    mail.IsBodyHtml = IsHtml;
    //邮件服务器和端口
    SmtpClient smtp = new SmtpClient(server, 25);
    smtp.UseDefaultCredentials = true;
    //指定发送方式
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    //发件人身份验证,否则163 发不了
    smtp.UseDefaultCredentials = true;
    //指定登录名和密码
    smtp.Credentials = new System.Net.NetworkCredential(username, password);
    //超时时间
    smtp.EnableSsl = false;
    smtp.Timeout = 10000;
    smtp.Send(mail);
    return true;
   }
   catch (Exception)
   {
    return false;
   }
   finally
   {
    mail.Dispose();
   }
  }

  //读取指定URL地址的HTML,用来以后发送网页用
  public static string ScreenScrapeHtml(string url)
  {
   //读取stream并且对于中文页面防止乱码
   StreamReader reader = new StreamReader(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream(), System.Text.Encoding.UTF8);
   string str = reader.ReadToEnd();
   reader.Close();
   return str;
  }

  //发送plaintxt
  public static bool SendText(string from, string fromname, string to, string subject, string body, string server, string username, string password)
  {
   return SendMail(from, fromname, to, subject, body, server, username, password, false);
  }

  //发送HTML内容
  public static bool SendHtml(string from, string fromname, string to, string subject, string body, string server, string username, string password)
  {
   return SendMail(from, fromname, to, subject, body, server, username, password, true);
  }

  //发送制定网页
  public static bool SendWebUrl(string from, string fromname, string to, string subject, string server, string username, string password, string url)
  {
   //发送制定网页
   return SendHtml(from, fromname, to, subject, ScreenScrapeHtml(url), server, username, password);

  }
  //默认发送格式
  public static bool SendEmailDefault(string ToEmail,string f_username,string f_pass,string f_times)
  {
   StringBuilder MailContent = new StringBuilder();
   MailContent.Append("亲爱的×××会员:<br/>");
   MailContent.Append(" 您好!你于");
   MailContent.Append(DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss"));
   MailContent.Append("通过<a href='#'>×××</a>管理中心审请找回密码。<br/>");
   MailContent.Append("   为了安全起见,请用户点击以下链接重设个人密码:<br/><br/>");
   string url = "http://www.×××.×××/SignIn/Rest?u=" + f_username + "&s=" + f_pass + "&t=" + f_times; 114 MailContent.Append("<a href='" + url + "'>" + url + "</a><br/><br/>"); 115 MailContent.Append(" (如果无法点击该URL链接地址,请将它复制并粘帖到浏览器的地址输入框,然后单击回车即可。)"); 116 return SendHtml(ConfigurationManager.AppSettings["EmailName"].ToString(), "会员管理中心", ToEmail, "×××找回密码", MailContent.ToString(), ConfigurationManager.AppSettings["EmailService"].ToString(), ConfigurationManager.AppSettings["EmailName"].ToString(), ConfigurationManager.AppSettings["EmailPass"].ToString()); //这是从webconfig中自己配置的。 117 } 118 } 119 }

webconfig配置信息

<add key="EmailName" value="××××@163.com"/>
<add key="EmailPass" value="××××"/>
<add key="EmailService" value="smtp.163.com"/>

//说明: 这里面的"EmailService"得与你自己设置邮箱的smtp/POP3/...服务要相同, 大部分是根据@后面的进行配置。我是用163邮箱配置的。 可以根据自己需要自己配置。

后台调用的方法

 public ActionResult SendEmail(string EmailName)
  {
   EmailName = Helper.FI_DesTools.DesDecrypt(EmailName);
   if (!Regex.IsMatch(EmailName, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
   {
    return Content("0");
   }
   string f_username = "";
   string f_pass = "";
   string f_times = Helper.FI_DesTools.DesEncrypt(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
   List<user> list = (from a in users where a.emailaddress == EmailName select a).ToList();
   if (list.Count > 0)
   {
    f_username = Helper.FI_DesTools.DesEncrypt(list[0].×××);
    f_pass = Helper.FI_DesTools.DesEncrypt(list[0].×××);

    bool flag = Helper.MailService.SendEmailDefault(EmailName, “×××”,“×××”, “×××”); //这里面的参数根据自己需求自己定,最好进行加密
    if (flag)
    {
     return Content("true");
    }
    else
    {
     return Content("false");
    }
   }
   else {
    return Content("false");
   }
  }

发送完邮件效果图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 邮件发送和接收实现代码

    邮件发送 方法一:使用System.Web.Mail命名空间(此方法我测试没有成功过)  复制代码 代码如下: #region 发送邮件:此方法失败 protected void SendFailed() { System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(); mail.From = "test@ gmail.com"; mail.To = " test@ gmail.com "

  • C#简单发送email的方法

    本文实例讲述了C#简单发送email的方法.分享给大家供大家参考.具体实现方法如下: #region 邮件发送 /// <summary> /// 发送邮件支持HTML格式 先引用System.Net.Mail; /// </summary> /// <param name="MailFrom">发送人Email 如demo@126.com</param> /// <param name="MailServer"

  • C#通用邮件发送类分享

    此类的功能包括发送邮件,邮箱格式是否正确,和在不发送邮件的情况下判断邮箱用户名和密码是否正确,鉴于POP检查邮箱用户名和密码出现错误情况返回结果的延迟,用异步线程解决此问题,见代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Mail; using System.Web; using System.Net; using System.

  • c#判断email地址是否为合法

    题目要求: 关键代码如下所示: class Program { static void Main(string[] args) { Console.WriteLine("请输入正确的邮箱地址,以 @sina.com 结尾"); string us =Convert.ToString(Console.ReadLine()); string str1 = us.Replace("@", ""); int count = us.Length - str

  • C#实现将Email地址转成图片显示的方法

    本文实例讲述了C#实现将Email地址转成图片显示的方法.分享给大家供大家参考.具体实现方法如下: private final static IndexColorModel icm = createIndexColorModel(); /** * 生成电子邮件图片 * @param email * @param out * @throws IOException */ public static void MakeEmailImage(String email, OutputStream out

  • C# Email发送邮件 对方打开邮件可获得提醒

    本文实例为大家分享了C# Email发送邮件的具体代码,供大家参考,具体内容如下 //回执地址 var Receipt = "填写你需要回执的地址"; //实例化两个必要的 MailMessage mail = new MailMessage(); SmtpClient smtp = new SmtpClient(); //发送邮箱地址 mail.From = new MailAddress("发送邮箱地址"); //收件人(可以群发) mail.To.Add(ne

  • C#实现的自定义邮件发送类完整实例(支持多人多附件)

    本文实例讲述了C#实现的自定义邮件发送类.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Mail; using System.Net.Mime; namespace ConsoleApplication1 { /// <summary> /// 发送邮件类 的摘要说明 /// </summary&g

  • C#使用自带的email组件发送邮件的方法

    本文实例讲述了C#使用自带的email组件发送邮件的方法.分享给大家供大家参考.具体实现方法如下: #region 邮件发送 /// <summary> /// 发送邮件支持HTML格式 先引用System.Net.Mail; /// </summary> /// <param name="MailFrom">发送人Email 如demo@126.com</param> /// <param name="MailServe

  • C#实现SMTP邮件发送程序实例

    通常来说邮件发送功能在网站应用程序中经常会用到,包括大家经常看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,本文展示了一个客户端Demo,希望对有需要的朋友有所帮助.运行效果如下图所示: 核心代码如下: 复制代码 代码如下: using System; using System.Net; using System.Net.Mail; using System.Text; namespace HC.Email {     /// <summary>   

  • C# Email邮件发送功能 找回或重置密码功能

    最近根据公司需求,写个邮件发送.这里面的传入的地址信息的参数都是经过加密的,主要是保证用户信息的安全. using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net.Mail; using System.Text; using System.Web; namespace CalslNum.Helper

  • Java Email邮件发送简单实现介绍

    目录 一.邮件协议 1.POP3 2.SMTP 3.IMAP 4.IMAP和POP3有什么区别 二.发送邮件 三.总结 一.邮件协议 MTA 和 MDA 这样的服务器软件通常是现成的,我们通常不会关心这些邮件服务器的内部是如何运行 的.更多的需求场景,是需要发送邮件.例如:促销商品邮件.验证码邮件.消息通知邮件等.常见的 邮件协议有: POP3 . SMTP . IMAP . 1.POP3 POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算

  • Django通用类视图实现忘记密码重置密码功能示例

    前言 在Django中有大量的通用类视图,例如ListView,DetailView,CreateView,UpdateView等等,将所有重复的增删改查代码抽象成一个通用类,只需要配置极少量的代码即可实现功能. 使用通用类视图完成找回密码功能 首先引入 from django.contrib.auth.views import PasswordResetView, PasswordResetConfirmView, \ PasswordResetDoneView, PasswordChange

  • Vue实现登录记住账号密码功能的思路与过程

    目录 实现思路 这里有三种方法来存储账号密码: 功能界面 记住账号密码功能的具体实现 密码加密 localStorage cookies 总结 实现思路 用户登录时若勾选"记住我"功能选项,则将登录名和密码(加密后)保存至本地缓存中,下次登录页面加载时自动获取保存好的账号和密码(需解密),回显到登录输入框中. 这里有三种方法来存储账号密码: 1. sessionStorage(不推荐) 1). 仅在当前会话下有效,关闭浏览器窗口后就被清除了 2). 存放数据大小一般为5MB 3). 不

  • Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法

    本文实例讲述了Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法.分享给大家供大家参考,具体如下: Zend Framework 里Zend_Mail这个组件用起来还是很方便的..它提供了通用化的编写与发送文本内容的邮件,当然它也兼容MIME标准的多个多个段的邮件消息的功能.Zend_Mail里通过默认的Zend_Mail_Transport_SendMail传输或能过Zend_Mail_Transport_Smtp来发送我们的电子邮件. Ze

  • SpringMVC实现通过邮件找回密码功能

    最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最后一封邮件的url 加密能防止伪造攻击,一次url只能验证一次,并且绑定了用户

  • Java实现邮件找回密码功能

    本文实例为大家分享了Java实现邮件找回密码功能的具体代码,供大家参考,具体内容如下 1.有个需求就是,忘记密码后通过邮箱找回.现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回.通过java发送邮件的功能我就不说了,重点讲找回密码. 2.参考别人的思路:发送邮件→请求邮件里的URL→验证url→{验证成功修改密码,不成功跳转到失败页面} 重点就是如何生成这个url和如何解析这个url. 需要注意的是一个url只能修改一次密码,当同一帐号发送多封邮件,只有最

  • php实现在站点里面添加邮件发送的功能

    下面夏日博客来讲下如何在站点里面添加一个邮件发送的功能. 首先需要下载一个smtp 的 php 邮件发送类,代码如下: <?php class smtp { /* Public Variables */ public $smtp_port; public $time_out; public $host_name; public $log_file; public $relay_host; public $debug; public $auth; public $user; public $pas

  • python实现SMTP邮件发送功能

    一直想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件.之后是邮箱.像163.qq.新浪等邮箱默认关闭SMTP服务,需要我们手动打开,打开后通过发件人邮箱.授权密码 通过发件人的SMTP服务发送 代码如下: #!/usr/bin/env python # -*- coding: utf_8 -*- from email.mime.text import MIMEText from email

  • Android实现带附件的邮件发送功能

    本文实例讲解了基于基于JMail实现Android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有一点是比较方便,不需要写很多代码,但是不是很灵活. 第二种:基于JMail实现,可以很灵活的自己设置各种属性,不需要GMail帐号 在第二种方式的实现之前,看一下JMail对EMail结构的划分: 基于SMTP协议发送EMail,所以客户端必须要知道SMTP的主机. 腾讯邮件的SMTP主机为:s

随机推荐