青格儿 发表于 2008-6-12 16:29

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

系统中,当用户把密码忘了,要通过邮箱找回.当他点通过邮箱找回这按钮时,如何让系统自动发邮件到他信箱里?

也就是系统怎么自己写个文件发给用户,动态创建文件并发送给用户。这怎么做?请大家帮帮我,最好能给我个实例,我先在这谢谢了。

lqw 发表于 2008-6-12 17:29

一、首先需要配置web.config文件:

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

//// <summary>
/// </summary>
/// <param name="mailto">收件人地址。如:receiver@163.com</param>
/// <param name="mailsubject">邮件标题</param>
/// <param name="mailbody">邮件正文</param>
/// <param name="mailFrom">邮件发送人地址。如:sender@163.com</param>
/// <returns></returns>
public bool MySendMail(string mailto, string mailsubject, string mailbody, string mailFrom)
{
  try
  {
    //邮件发送人地址
    System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mailFrom);
    //如test@163.com,初步测试,用test@sina.com不行,用163的邮件服务器,就必须用163邮箱的用户名
    //收件人地址
    System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mailto);//如test@tom.com
    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(from, to);
    mail.Subject = mailsubject;
    mail.Body = mailbody;
    //以下设置服务器
    System.Net.Mail.SmtpClient mySmth = new System.Net.Mail.SmtpClient();
    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]]

gupiao175 发表于 2008-6-13 13:49

有没有具体的实例啊,希望好心人发个出来。谢了。

几经测试还是不行,可能对这个不够了解,有没有具体的实例啊,希望好心人发个出来。谢了。[em01]

青格儿 发表于 2008-6-13 18:32

string mailFrom = ConfigurationManager.AppSettings["SendMail"];

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

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

[[it] 本帖最后由 青格儿 于 2008-6-13 19:36 编辑 [/it]]

lqw 发表于 2008-6-14 09:33

在IIS里面你有没有装上那个SMTP邮件服务?

青格儿 发表于 2008-6-14 09:45

我装了,还要设置什么吗?为什么总是发送失败?

青格儿 发表于 2008-6-14 11:10

谢谢了,二楼的朋友,终于测试成功了.

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



三楼的朋友,我来说下我是怎么解决的,希望你的问题也能解决。
我的总是发送失败,我今天又做了一遍,哎,我都不知我做几遍了,呵呵
<system.net>
  <mailSettings>
    <smtp from="Emailname">//这里不能这么写,应写成下面那个用户名@163.com (也就是写全,就可以发送成功了。)
        <network host="smtp.163.com" userName="用户名" password="密码"
        port="25" defaultCredentials="false"/>
    </smtp>
  </mailSettings>
</system.net>

冰彩虹 发表于 2008-6-15 00:03

楼上精神可嘉!赞一个

青格儿 发表于 2008-6-15 10:09

呵呵,谢谢夸奖。我觉得这论坛上的人都挺好的,所以我很喜欢和大家一起进步,呵 呵

hebingbing 发表于 2008-6-15 13:42

一直就欣赏青妹妹的求学态度……

gupiao175 发表于 2008-6-16 11:07

楼主的干净十足,值得学习!

楼主的干净十足,值得学习![em01]
我继续去测试,如果还不行再上来问。先帮你顶一个![em01]

lqw 发表于 2008-6-16 13:08

是的,只要把host="自己的服务器"就可以了,好像除了126和163这两个需要用户名和密码外其它的邮件服务器是不用的!

青格儿 发表于 2008-6-16 14:07

呵呵,不要夸我了,我都不好意思了。这是我的工作,不是干劲十足啊,是不干不行啊,呵呵

这么说,只有126和163的邮件服务器可用了,装上smtp协议或是需要的一切协议也不行吗?呵呵,我对邮件服务器配置一点不懂。

gupiao175 发表于 2008-6-16 14:35

[em02] 搞了半天还是不董,我把
<mailSettings>
    <smtp from="xiwang459@163.com">
        <network host="smtp.163.com" userName="xiwang459" password="1457wu"
        port="25" defaultCredentials="false"/>
    </smtp>
  </mailSettings>
加到WEB。CONFIG里
然后把其他组成一个ASPX文件,可是还是搞不董什么意思!汗![em04]
能不能再说详细点的,我对。NET是个入门汉![em10]

gupiao175 发表于 2008-6-16 14:37

对不起啊,我怎么把密码也发出来了。[em08]

lqw 发表于 2008-6-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 System.Net.Mail;

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@163.com","qwlin1"));//别人的邮箱地址
            mail.From = new MailAddress("lierlqw@126.com","我的第一封信");//自己的邮箱地址
            mail.Subject = "this is a test email.";
            mail.Body = "this is my test email body";
            mail.Priority = MailPriority.High;//邮件的紧急程度
            System.Net.Mail.SmtpClient client = new SmtpClient();
            client.Credentials = new System.Net.NetworkCredential("lierlqw","你的密码");
            client.Host = "smtp.126.com";//smtp邮箱地址
            client.Send(mail);
        }
        catch (System.Net.Mail.SmtpException ex)
        {
            Response.Write(ex.Message);
        }

    }
}

[[it] 本帖最后由 lqw 于 2008-6-16 14:43 编辑 [/it]]

青格儿 发表于 2008-6-16 19:10

嗯,对啊,实在不行,用Jmail做也行的。它需要下载。

sunyuanfeng 发表于 2008-6-17 11:32

回复 1# 青格儿 的帖子

太有难度的问题了!

gupiao175 发表于 2008-6-17 13:20

如果用组件JMAIL,那这个帖就该发到ASP去了![em02]

如果用组件JMAIL,那这个帖就该发到ASP去了![em02]
请教一下,谁知道2楼的方法是具体怎么用的呢?哪些文件组成一个什么文件(ASPX,CS),把详细代码发出来看下,好吗![em02] 非常感谢!

gupiao175 发表于 2008-6-17 13:26

。。。。。。。

由于偶是个。NET新手,所以我需要一个完整的文件,包括其文件名及扩展名,不是片段式代码,非常感谢了![em02]

页: [1] 2

编程论坛