c#发送邮件

最近在做一个通过点击忘记密码往用户邮箱中发邮件(邮件内容是一个超链接)点击进行修改的功能,发送原理,我们只是把邮件发送给smtp服务器,然后再由smtp服务器发送到邮箱,发送之前要校验一下。

1、微软已经帮我们封装好了发送邮件的类 MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。MailMessage常用的一些属性有:

  1.1、From:发件人邮箱地址。

  1.2、To:收件人的邮箱地址。

  1.3、Subject:邮件标题。

  1.4、Body:邮件内容。

2、还需要用到SmtpClient类进行发送邮件。SmtpClient类的意思是:允许应用程序使用简单邮件传输协议 (SMTP) 来发送电子邮件。SmtpClient类常用的一些属性和方法:

  2.1、Host: 获取或设置用于 SMTP 事务的主机的名称或 IP 地址。

  2.2、EnableSsl:是否使用安全套接字层加密连接。

  2.3、UseDefaultCredentials:是否随请求一起发送。

  2.4、Credentials:获取或设置用于验证发件人身份的凭证。

  2.5、Send():发送。

3、上代码。

复制代码
 1 protected void Page_Load(object sender, EventArgs e)
 2 {
 3     //实例化一个发送邮件类。
 4     MailMessage mailMessage = new MailMessage();
 5     //发件人邮箱地址,方法重载不同,可以根据需求自行选择。
 6     mailMessage.From = new MailAddress("123456@qq.com");
 7     //收件人邮箱地址。
 8     mailMessage.To.Add(new MailAddress("654321@qq.com"));
 9     //邮件标题。
10     mailMessage.Subject = "发送邮件测试";
11     //邮件内容。
12     mailMessage.Body = "这是我给你发送的第一份邮件哦!";
13 
14     //实例化一个SmtpClient类。
15     SmtpClient client = new SmtpClient();
16     //在这里我使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com。
17     client.Host = "smtp.qq.com";
18     //使用安全加密连接。
19     client.EnableSsl = true;
20     //不和请求一块发送。
21     client.UseDefaultCredentials = false ;
22     //验证发件人身份(发件人的邮箱,邮箱里的生成授权码);
23     client.Credentials = new NetworkCredential("123456@qq.com", "fnsedjxib");
24     //发送
25     client.Send(mailMessage);          
26     Context.Response.Write("发送成功");
27 }
复制代码

 4、常见错误信息及解决办法。

  在做此功能的过程中,遇到过好几个异常信息,到最后百度了一下,总算解决了,有些新人在做的过程中,或许不知道问题出在哪了,接下来我就说说我常见的错误及解决办法。

  4.1、mail from address must be same as authorization user

    一般出这种情况的原因有两种:

    4.1.1、POP3/IMAP/SMTP未开启。

        解决办法:进入qq邮箱- - - - -》设置- - - - -》账户- - - - -》然后找到POP3/IMAP/SMTP开启即可。

        

    4.1.2、授权码错误。

        解决办法:进入qq邮箱- - - - -》设置- - - - -》账户- - - - -》然后找到POP3/IMAP/SMTP开POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务下的生成授权码填上即可。

  4.2、Error: need EHLO and AUTH first !

     一般情况系出现这种错误原因是SmtpClient类的EnableSsl、UseDefaultCredentials属性放到了Credentials属性之下。

     解决办法:将SmtpClient类的EnableSsl、UseDefaultCredentials属性放到了Credentials属性之上。

5、然后根据自己构建的链接就可以找回密码了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值