注册 登录
编程论坛 ASP.NET技术论坛

动态发送邮件给用户,这效果怎么做?

青格儿 发布于 2008-06-12 16:29, 5276 次点击
系统中,当用户把密码忘了,要通过邮箱找回.当他点通过邮箱找回这按钮时,如何让系统自动发邮件到他信箱里?

也就是系统怎么自己写个文件发给用户,动态创建文件并发送给用户。这怎么做?请大家帮帮我,最好能给我个实例,我先在这谢谢了。
38 回复
#2
lqw2008-06-12 17:29
一、首先需要配置web.config文件:

<
  <mailSettings>
    <smtp from="Emailname">
        <network host="smtp. userName="用户名" password="密码"
        port="25" defaultCredentials="false"/>
    </smtp>
  </mailSettings>
</
二、然后编写发送邮件的函数:

//// <summary>
/// </summary>
/// <param name="mailto">收件人地址。如:receiver@
/// <param name="mailsubject">邮件标题</param>
/// <param name="mailbody">邮件正文</param>
/// <param name="mailFrom">邮件发送人地址。如:sender@
/// <returns></returns>
public bool MySendMail(string mailto, string mailsubject, string mailbody, string mailFrom)
{
  try
  {
    //邮件发送人地址
    from = new (mailFrom);
    //如test@,初步测试,用test@不行,用163的邮件服务器,就必须用163邮箱的用户名
    //收件人地址
    to = new (mailto);//如test@
    mail = new (from, to);
    mail.Subject = mailsubject;
    mail.Body = mailbody;
    //以下设置服务器
    mySmth = new ();
    mySmth.Send(mail);
    mail.Dispose();
    return true;
  }
  catch
  {
    return false;
  }
}
三、最后就是对函数的调用了:

//自动发送邮件
string mailSubject = "会员密码";
string mailBody = 正文+数据库里的密码;
string mailFrom = ConfigurationManager.AppSettings["SendMail"];
if (MySendMail(this.txtEmail.Text, mailSubject, mailBody, mailFrom))
{
  ...
  //发送成功,进行相应处理
}
else
{
  ...
  //发送失败,进行相应处理
  return;
}

[[it] 本帖最后由 lqw 于 2008-6-12 17:36 编辑 [/it]]
#3
gupiao1752008-06-13 13:49
有没有具体的实例啊,希望好心人发个出来。谢了。
几经测试还是不行,可能对这个不够了解,有没有具体的实例啊,希望好心人发个出来。谢了。
#4
青格儿2008-06-13 18:32
string mailFrom = ConfigurationManager.AppSettings["SendMail"];

这个SendMail哪来的?webconfig里没有这个啊

我试了好多次,上网上也查了,跟 你这方法差不多,可是每次结果都是发送失败,这是怎么回事?

[[it] 本帖最后由 青格儿 于 2008-6-13 19:36 编辑 [/it]]
#5
lqw2008-06-14 09:33
在IIS里面你有没有装上那个SMTP邮件服务?
#6
青格儿2008-06-14 09:45
我装了,还要设置什么吗?为什么总是发送失败?
#7
青格儿2008-06-14 11:10
谢谢了,二楼的朋友,终于测试成功了.

另:再问下,如果我要用我自己的邮件服务器,是不是把host="smtp.这个改成自己的邮件服务器就行了?那自自己的邮件服务器还要配置什么吗?那都配些什么呢?



三楼的朋友,我来说下我是怎么解决的,希望你的问题也能解决。
我的总是发送失败,我今天又做了一遍,哎,我都不知我做几遍了,呵呵
<
  <mailSettings>
    <smtp from="Emailname">//这里不能这么写,应写成下面那个用户名@ (也就是写全,就可以发送成功了。)
        <network host="smtp. userName="用户名" password="密码"
        port="25" defaultCredentials="false"/>
    </smtp>
  </mailSettings>
</
#8
冰彩虹2008-06-15 00:03
楼上精神可嘉!赞一个
#9
青格儿2008-06-15 10:09
呵呵,谢谢夸奖。我觉得这论坛上的人都挺好的,所以我很喜欢和大家一起进步,呵 呵
#10
hebingbing2008-06-15 13:42
一直就欣赏青妹妹的求学态度……
#11
gupiao1752008-06-16 11:07
楼主的干净十足,值得学习!
楼主的干净十足,值得学习!
我继续去测试,如果还不行再上来问。先帮你顶一个!
#12
lqw2008-06-16 13:08
是的,只要把host="自己的服务器"就可以了,好像除了126和163这两个需要用户名和密码外其它的邮件服务器是不用的!
#13
青格儿2008-06-16 14:07
呵呵,不要夸我了,我都不好意思了。这是我的工作,不是干劲十足啊,是不干不行啊,呵呵

这么说,只有126和163的邮件服务器可用了,装上smtp协议或是需要的一切协议也不行吗?呵呵,我对邮件服务器配置一点不懂。
#14
gupiao1752008-06-16 14:35
搞了半天还是不董,我把
<mailSettings>
    <smtp from="xiwang459@
        <network host="smtp. userName="xiwang459" password="1457wu"
        port="25" defaultCredentials="false"/>
    </smtp>
  </mailSettings>
加到WEB。CONFIG里
然后把其他组成一个ASPX文件,可是还是搞不董什么意思!汗!
能不能再说详细点的,我对。NET是个入门汉!
#15
gupiao1752008-06-16 14:37
对不起啊,我怎么把密码也发出来了。
#16
lqw2008-06-16 14:40
除了以上做法还可以直接写一个文件不改动web.config也可以代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using

public partial class emailSend : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            MailMessage mail = new MailMessage();
            mail.To.Add(new MailAddress("qwlin1@,"qwlin1"));//别人的邮箱地址
            mail.From = new MailAddress("lierlqw@,"我的第一封信");//自己的邮箱地址
            mail.Subject = "this is a test email.";
            mail.Body = "this is my test email body";
            mail.Priority = MailPriority.High;//邮件的紧急程度
             client = new SmtpClient();
            client.Credentials = new ("lierlqw","你的密码");
            client.Host = "smtp.邮箱地址
            client.Send(mail);
        }
        catch ( ex)
        {
            Response.Write(ex.Message);
        }

    }
}

[[it] 本帖最后由 lqw 于 2008-6-16 14:43 编辑 [/it]]
#17
青格儿2008-06-16 19:10
嗯,对啊,实在不行,用Jmail做也行的。它需要下载。
#18
sunyuanfeng2008-06-17 11:32
回复 1# 青格儿 的帖子
太有难度的问题了!
#19
gupiao1752008-06-17 13:20
如果用组件JMAIL,那这个帖就该发到ASP去了![em02]
如果用组件JMAIL,那这个帖就该发到ASP去了!
请教一下,谁知道2楼的方法是具体怎么用的呢?哪些文件组成一个什么文件(ASPX,CS),把详细代码发出来看下,好吗! 非常感谢!
#20
gupiao1752008-06-17 13:26
。。。。。。。
由于偶是个。NET新手,所以我需要一个完整的文件,包括其文件名及扩展名,不是片段式代码,非常感谢了!
#21
青格儿2008-06-18 08:52
谁说Jmai是Asp的?
我测试过了,Jmail可以的。你可以试试么。我系统里用的就是Jmail,挺好用的啊。

二楼那就就是全部代码啊,先在webconfig里配置一下,然后再建个test.aspx
他省略号的部分是你从数据库里读出来的用户名和密码。也就是打开数据库。。。
你可以先不读数据库,直接给它固定值,测试下。可以了,你再连上数据库啊。
#22
gupiao1752008-06-18 11:26
。。。。。
算了。不问了。自己研究!
如果说个大概我就明白了,那我还算一个菜鸟入门新手吗?
如果我不是新手,我在这里问什么?
#23
gupiao1752008-06-18 11:27
难道论坛只为有。NET基础的人准备的吗?
难道论坛只为有。NET基础的人准备的吗?
#24
gupiao1752008-06-18 11:41
//// <summary>
/// </summary>
/// <param name="mailto">收件人地址。如:receiver@
/// <param name="mailsubject">邮件标题</param>
/// <param name="mailbody">邮件正文</param>
/// <param name="mailFrom">邮件发送人地址。如:sender@
/// <returns></returns>
public bool MySendMail(string mailto, string mailsubject, string mailbody, string mailFrom)
{
  try
  {
    //邮件发送人地址
    from = new (mailFrom);
    //如test@,初步测试,用test@不行,用163的邮件服务器,就必须用163邮箱的用户名
    //收件人地址
    to = new (mailto);//如test@
    mail = new (from, to);
    mail.Subject = mailsubject;
    mail.Body = mailbody;
    //以下设置服务器
    mySmth = new ();
    mySmth.Send(mail);
    mail.Dispose();
    return true;
  }
  catch
  {
    return false;
  }
}
以上代码直接组成TEST。ASPX根本就不行。
谁说可以请占出来解释一下,还需要加什么!
#25
青格儿2008-06-18 13:27
你上面哪个写在类文件里,在test.aspx里调用它
string mailto = "kaka@
string mailSubject = "会员密码";
string mailBody = "正文+数据库里的密码";
string mailFrom = ConfigurationManager.AppSettings["SendMail"];
if(page.MySendMail(mailto, mailSubject, mailBody, mailFrom))
{
Response.Write("<script language='javascript'> alert('发送成功!');</script>");
}
else
{
Response.Write("<script language='javascript'> alert('发送失败!');</script>");
}

这样行不?我就是这样用的,你试试吧

[[it] 本帖最后由 青格儿 于 2008-6-18 13:51 编辑 [/it]]
#26
gupiao1752008-06-19 10:11
上来说一下,经过自己晚上的研究终于自己搞定了!
上来说一下,经过自己晚上的研究终于自己搞定了! 而且代码超级简单,根本不要去改什么WEB。CONFIG,当然改了比较符合配置。NET的思维结构!但是不适合初学者!哈哈。没什么我搞不定的!
我用的。NET自带的using System.Web.Mail;根据网上查的资料using 好象也可以,这种的没试过!
#27
gupiao1752008-06-19 10:12
想要这个代码做初学资料的,可以联系我!
想要这个代码做初学资料的,可以联系我!
#28
gupiao1752008-06-19 10:14
100%担保代码可运行,无需任何设置!
100%担保代码可运行,无需任何设置!
#29
gupiao1752008-06-19 10:14
效果好不好用了才知道!
效果好不好用了才知道! 吃门门香,请用蓝天六必治,啊我怎么说成广告了!
#30
gupiao1752008-06-19 12:37
using System.Net.Mail
using 这个组件是2。0以后才有的,这个用起来可设置的范围更广,个人感觉也简单些,至此所有问题基本搞定! 后续!
#31
青格儿2008-06-19 13:37
using 这个是好用,可是不能改邮件服务器。不过恭喜你,终于做出来了,呵呵
#32
gupiao1752008-06-19 18:07
呵呵,看我签名就知道了!
呵呵,看我签名就知道了!

using 这个不能改邮件服务器吗??你指的是什么?

总之我自己用了,感觉比SYSTEM。WEB。MAIL好用。用的也是126/163上我自己的邮箱测试成功,而且感觉原理结构更简单些!
#33
hebingbing2008-06-19 18:48
那你把你的代码共享啊……
#34
青格儿2008-06-19 19:47
对啊,你把你的代码贴出来,学习学习,呵呵
#35
gupiao1752008-06-20 10:27
。。。。。。。。。
我的方法就是楼主和16楼提供的思路,具体代码,他们在前面已经讲到过了。我用的代码也和他们一模一样!
目前常用可知的方法就3个
1。JMAIL,历史很久了
2。SYSTEM。NET。MAIL
3。SYSTEM。WEB。MAIL
#36
gupiao1752008-06-20 10:29
。。。。。。。
具体代码,楼主上的前面几位已经提供得很详细了!有谁不会用的,可以单独来向我咨询! 当然也可以找楼主!楼主也是个很热情的人,他会把代码一一给你们讲解的啊!
#37
gupiao1752008-06-20 10:33
[bo][un]青格儿[/un] 在 2008-6-18 08:52 的发言:[/bo]

谁说Jmai是Asp的?
我测试过了,Jmail可以的。你可以试试么。我系统里用的就是Jmail,挺好用的啊。

二楼那就就是全部代码啊,先在webconfig里配置一下,然后再建个test.aspx
他省略号的部分是你从数据库里读出来 ...



以上是楼主对我的帮助,没有楼主热情帮助,我是不明白具体使用方法,经过它这么一解释,我终于把问题解决了,感谢他把方法给我解释得这么详细,在此感谢楼主的热情帮助!
#38
qq4975257252008-10-22 10:17
不 错 找到了 谢谢2楼
#39
zore02008-10-22 19:56
求助,css样式问题
刚才发错问题了

[[it] 本帖最后由 zore0 于 2008-10-22 21:03 编辑 [/it]]
1