首页新闻找找看学习计划

asp.net自动发送邮件

0
[已关闭问题] 关闭于 2010-03-10 10:49

我想问一下,当别人根据邮箱号吗找回密码的时候我要怎么样才能以邮件的形式把密码发送到别人的邮箱里面??

问题补充: 写下注释啊,没注释怎么看得懂啊?还有就是需要配置web.config的说明怎么配置啊,我要发送各种邮箱,
°潶、緤°的主页 °潶、緤° | 初学一级 | 园豆:17
提问于:2010-03-02 16:32
< >
分享
所有回答(6)
0

首先要保证密码的加密算法是可逆的,当申请找回密码的时候,根据邮箱地址找到用户和密码的密文(如果有加密),然后将数据库的密码的密文还原,使用下面代码将其发送给用户。密码可以放在下面代码的body中。

using System;
    using System.Net.Mail;
    using System.Net;
   
    /// <summary>
    /// 说明:在.net2.0以上版本中发送电子邮件的方法示例
    /// 用到的类主要位于System.Net.Mail和System.Net命名空间下 
    /// 日期:2008-08-08 
    /// </summary>
    public class SendMail2
    {
        public SendMail2() { } /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param>收件人邮件地址</param>
        /// <param>发件人邮件地址</param>
        /// <param>邮件主题</param>
        /// <param>邮件内容</param>
        /// <param>登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>
        /// <param>登录smtp主机时用到的用户密码</param>
        /// <param>发送邮件用到的smtp主机</param>
        public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost)
        {
            MailAddress from = new MailAddress(from);
            MailAddress to = new MailAddress(to);
            MailMessage message = new MailMessage(from, to);
            message.Subject = subject;//设置邮件主题
            message.IsBodyHtml = true;//设置邮件正文为html格式
            message.Body = body;//设置邮件内容
            SmtpClient client = new SmtpClient(smtpHost);
            //设置发送邮件身份验证方式
            //注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com
            client.Credentials = new NetworkCredential(userName, password);
            client.Send(message);
        }
    }

麒麟 | 园豆:389 (菜鸟二级) | 2010-03-02 16:54
0

这个你需要有一个邮箱系统,类似mail.163.com这样子的邮件系统,其实也可以是一个固定IP的机器,机器上安装上一套邮件系统,比如winwebmail邮件系统,安装配置后就可以使用了。

第二步你可以使用.NET程序中提供的SMTP邮件发送类来进行邮件发送,只是发送时你看是需要给用户原始密码还是随机生成的,如果是原始密码,你需要在发送程序中依据用户的mail地址查询出用户的名文密码(如果是可解密的需要解密),然后把密码作为消息体作为邮件发送给该email即可。如果密码是不可解密的比如MD5,建议你可以在此步骤时使用随机数生成类,生成一个随机数,然后把这个随机数作为email的消息体发送给该email,不过这里需要多一个步骤就是把这个名文MD5后存入数据库。

基本的流程就是这样子了,当然这些过程是可变的,只是根据你实际的需求来处理就好.

 

后面附上 生鱼片 代码注释:

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            MailAddress from = new MailAddress("asdf@112.com", "cary");//设置你的邮件地址和显示用的用户名
            MailAddress to = new MailAddress("chenghui921@126.com", "toname");//这里设置发送给谁的邮箱地址和他的用户名
            MailMessage message = new MailMessage(from, to);
            message.Subject = "The subject";//设置邮件主题
            message.Body = "The message body";//设置邮件内容
            message.IsBodyHtml = true;//设置邮件发送是否支持以Html格式发送 默认是以纯文本形式发送
            string host = "smtp.gmail.com";//这里使用了google的smtp邮件服务器
            SmtpClient client = new SmtpClient(host, 587);//google使用587这个端口最为邮件发送接收端口
            client.EnableSsl = true;//是否使用安全套接字层(ssl)加密连接
            client.Credentials = new NetworkCredential("<<your username>>", "<<your password>>");//设置你的账号 密码
            client.Send(message);//发送邮件
            Console.ReadLine();
        }
    }
}

西越泽 | 园豆:10633 (专家六级) | 2010-03-02 16:56
0

.Net的邮件发送类还是没有Jmail强大,可是用Jmail来处理,用。Net发送类你还得在服务器上面给搭建一个SMTP服务器,所以要想省事还是Jmail好!

Devin Mao | 园豆:596 (小虾三级) | 2010-03-02 17:57
Jmail中文乱码
支持(0) 反对(0) 麒麟 | 园豆:389 (菜鸟二级) | 2010-03-02 18:23
0
1 public void SendMsg(string sAddress,string sPwd,string rAddress,string title,string body,string server,int port)
2
3 {
4
5 MailMessage msg = new MailMessage(sAddress,rAddress);//创建MailMessage对象,接受发送和接收方的地址
6  
7 msg.Subject = title;//获取邮件的主题
8  
9 msg.Body = body;
10
11 SmtpClient client = new SmtpClient(server,port);//获取服务器及其端口
12
13 client.Credentials = new System.Net.NetworkCredential(sAddress,sPwd);//发送邮件参数(发送人地址和发送方密码)
14
15 client.Send(msg);
16
17 }
18
19 在实现页面Default.cs页面添加:
20
21 protected void Button1_Click(object sender, EventArgs e)
22
23 {
24
25 string sAddress = TextBox1.Text;
26
27 string sPw = TextBox2.Text;
28
29 string rAddress = TextBox3.Text;
30
31 string title = TextBox4.Text;
32
33 string body = TextBox5.Text;
34
35 string server = "stmp.163.com";
36
37 int port = 25;
38
39 WebService s = new WebService();
40
41 s.SendMsg(sAddress, sPw, rAddress, title,body,server,port);
42
43 }
44
45

 

实现发送电子邮件的功能,需要加System.Net.Mail类

风影极光 | 园豆:1573 (小虾三级) | 2010-03-02 18:04
麻烦给我变量的注释,还有就是这样要配置吗?
支持(0) 反对(0) °潶、緤° | 园豆:17 (初学一级) | 2010-03-03 10:51
0

我写过一篇是用Gmail的,测试通过可以使用,可以参考下:

地址如下:http://www.cnblogs.com/carysun/archive/2009/11/12/sendmail-by-gmail.html

主要代码:

代码
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
var from
= new MailAddress("asdf@112.com", "cary");
var to
= new MailAddress("chenghui921@126.com", "toname");
var message
= new MailMessage(from, to);
message.Subject
= "The subject";
message.Body
= "The message body";
message.IsBodyHtml
= true;
var host
= "smtp.gmail.com";
var client
= new SmtpClient(host, 587);
client.EnableSsl
= true;
client.Credentials
= new NetworkCredential("<<your username>>", "<<your password>>");
client.Send(message);
Console.ReadLine();
}
}
}

 

生鱼片 | 园豆:5757 (大侠五级) | 2010-03-02 19:47
麻烦给我注释啊!!!
支持(0) 反对(0) °潶、緤° | 园豆:17 (初学一级) | 2010-03-03 10:51
0

不用那么麻烦把,个人观点,我觉得直接找回密码就可以了

     这个做法的实现就是当使用者使用密码找回功能时,通过申请资料关联数据库找回密码,然后发Mail通知申请人

陳修君 | 园豆:480 (菜鸟二级) | 2010-03-04 14:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册