ASP.NET 邮件发送

前言

基于ASP.NET发送邮件,其实最开始的想法是做一个类似注册验证邮件,本文只是做了一点微小的工作,先挖个坑吧。

设计

1
2
3
<asp:Label ID="Label1" runat="server" Text="邮箱:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" />

没错,就是这么简洁,美滋滋。

后端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
protected void Button1_Click(object sender, EventArgs e)
{
//String qqmail=Request["Textbox1"];
//声明一个Mail对象
MailMessage mail = new MailMessage();
//发件人地址
mail.From = new MailAddress("869759698@qq.com");
//收件人地址
mail.To.Add(new MailAddress(TextBox1.Text));
//邮件主题
mail.Subject = "注册验证";
//邮件标题编码
mail.SubjectEncoding = System.Text.Encoding.UTF8;
//邮件内容
mail.Body = "请点击以下链接激活你的账户 www.omooo.top";
//邮件内容编码
mail.BodyEncoding = System.Text.Encoding.UTF8;
//添加附件
// Attachment myfiles = new Attachment(Attachment.PostedFile.FileName);
// mail.Attachments.Add(myfiles);
//抄送到其他邮箱
// mail.CC.Add(new MailAddress(抄送地址));
//是否是HTML邮件
mail.IsBodyHtml = true;
//邮件优先级
mail.Priority = MailPriority.High;
//创建一个邮件服务器类
SmtpClient myclient = new SmtpClient();
myclient.Host = "smtp.qq.com";
//指定邮件发送方式
myclient.DeliveryMethod = SmtpDeliveryMethod.Network;
//SMTP端口
myclient.Port = 25;
myclient.EnableSsl = true;
//验证登录
myclient.Credentials = new NetworkCredential("869759698@qq.com", "unznmehvinqspbfdi");
myclient.Send(mail);
/*
try
{
myclient.Send(mail);
return true;
}
catch {
return false;
}
* */
}

可能遇到的问题

  1. 服务器响应Error: need EHLO and AUTH first ! 的错误。原因可能就是验证登录的密码不是QQ密码,而是授权码。
  2. myClient的EnableSsl要设置为true,再此之前是缺少的,不需要指定。
  3. 不管是QQ邮箱还是网易邮箱,端口号设置为25即可,不要使用465,否者会一直等待,然后操作超时。

最后

没有最后了,不属于我的节日,辣鸡。

我们一直都向往,面朝大海,春暖花开。 但是几人能做到,心中有爱,四季不败?