1.实例:从qq邮箱 发送到其他地址的邮箱

>telnet smtp.qq.com 25

>helo qq.com

>auth login

>NzI3MTU0MTg3QHFxLmNvbQ== (邮箱名的base64编码  http://tool.chinaz.com/Tools/base64.aspx)

>。。。。。。。。。。。。。。。。。(邮箱密码的base64编码)

>mail from:727154187@qq.com

>rcpt to:jimei@outlook.com

>Data

From:727154187@qq.com

TO:jimei@outlook.com

Subject:test mail

.     (注意最后以'.'结束)

[注]查找smtp 地址的命令: nslookup -type=mx [域名]

2.常用命令:

参数
作用
HELO
使用标准的SMTP,向服务器标识用户身份。发送者能进行欺骗,但一般情况下服务器都能检测到
EHLO
使用ESMTP,向服务器标识用户身份。发送者能进行欺骗,但一般情况下服务器都能检测到。
STARTTLS
启用TLS
MAIL FROM
命令中指定的地址是发件人地址
RCPT TO
标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面
DATA
在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以CRLF.CRLF 结束
VRFY
用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN
验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP
查询服务器支持什么命令
NOOP
无操作,服务器响应 250 OK
RSET
重置会话,当前传输被取消,服务器响应 250 OK
QUIT
结束会话

3.常见错误码:

421 Service not available, closing transmission channel (This may be a reply to any command if the service knows it must shut down)
450 Requested mail action not taken: mailbox unavailable (E.g., mailbox busy)
451 Requested action aborted: local error in processing
452 Requested action not taken: insufficient system storage
500 Syntax error, command unrecognized (This may include errors such as command line too long)
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken: mailbox unavailable (E.g., mailbox not found, no access)
551 User not local; please try
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed (E.g., mailbox syntax incorrect)
554 Transaction failedThe other codes that provide you with helpful information about what’s happening with your messages are:
211 System status, or system help reply
214 Help message (Information on how to use the receiver or the meaning of a particular non-standard command; this reply is useful
only to the human user)
220 Service ready
221 Service closing transmission channel
250 Requested mail action okay, completed
251 User not local; will forward to
354 Start mail input; end with . (a dot)
‘*************************  
  ‘*   邮件服务返回代码含义  
  ‘*   500   格式错误,命令不可识别(此错误也包括命令行过长)  
  ‘*   501   参数格式错误  
  ‘*   502   命令不可实现  
  ‘*   503   错误的命令序列  
  ‘*   504   命令参数不可实现  
  ‘*   211   系统状态或系统帮助响应  
  ‘*   214   帮助信息  
  ‘*   220   服务就绪  
  ‘*   221   服务关闭传输信道  
  ‘*   421   服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)  
  ‘*   250   要求的邮件操作完成  
  ‘*   251   用户非本地,将转发向  
  ‘*   450   要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)  
  ‘*   550   要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)  
  ‘*   451   放弃要求的操作;处理过程中出错  
  ‘*   551   用户非本地,请尝试  
  ‘*   452   系统存储不足,要求的操作未执行  
  ‘*   552   过量的存储分配,要求的操作未执行  
  ‘*   553   邮箱名不可用,要求的操作未执行(例如邮箱格式错误)  
  ‘*   354   开始邮件输入,以.结束  
  ‘*   554   操作失败  
  ‘*   535   用户验证失败  
  ‘*   235   用户验证成功  
  ‘*   334   等待用户输入验证信息

  1 <%@ WebHandler Language="C#" Class="SendMailHandler" %>
  2
  3 using System;
  4 using System.Linq;
  5 using System.Web;
  6 using System.Web.SessionState;
  7
  8 using System.Collections.Generic;
  9 using System.Web.Script.Serialization;
 10
 11
 12 using System.Text.RegularExpressions;
 13 using System.Net;
 14 using System.Net.Mail;
 15
 16 public class SendMailHandler : IHttpHandler
 17 {
 18     public void ProcessRequest(HttpContext context)
 19     {
 20         context.Response.ContentType = "text/plain";
 21         JavaScriptSerializer ser = new JavaScriptSerializer();
 22         var form=context.Request.Form;
 23         string email =form["email"]??"";
 24
 25         bool status=false;
 26         string msg="";
 27         string log="";
 28          try
 29          {
 30
 31
 32             var smtpSetting=new Smtp
 33             {
 34                 Port=25 ,
 35                 EnableSsl=false ,
 36                 Host="smtp.qq.com" ,
 37                 Password="******" ,
 38                 UserName="727154187@qq.com" ,
 39                 From="727154187@qq.com" ,
 40                 To=new string[] { "jimei@outlook.com" }
 41             };
 42
 43              Regex reg = new Regex(@"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$");
 44
 45              if(smtpSetting!=null && !string.IsNullOrEmpty(email) && reg.IsMatch(email))
 46              {
 47
 48                  var template=@"<div>
 49                             <p><b>Gender:</b> <span>$$gender$$</span></p>
 50                             <p><b>Name:</b> <span>$$name$$</span></p>
 51                             <p><b>Email:</b> <span>$$email$$</span></p>
 52                             <p><b>Topic:</b> <span>$$topic$$</span></p>
 53                             <p><b>Content:</b> <span>$$content$$</span></p></div>";
 54                  var g=form["gender"]??"1";
 55
 56                  template=template.Replace("$$gender$$" ,g=="1"?"male":"female");
 57                  template=template.Replace("$$name$$" , form["name"]??"");
 58                  template=template.Replace("$$email$$" , form["email"]??"");
 59                  template=template.Replace("$$topic$$" , form["topic"]??"");
 60                  template=template.Replace("$$content$$" ,form["content"]??"");
 61
 62                  status=SendEmail(smtpSetting , "ContactUs" , template,out log);
 63
 64              }
 65          }
 66          catch(Exception e)
 67          {
 68              msg=e.Message;
 69              status=false;
 70          }
 71          var objRtn = new { result=status.ToString(),Msg=msg,Log=log};
 72         context.Response.Write(ser.Serialize(objRtn));
 73         context.Response.End();
 74     }
 75
 76     private bool SendEmail(Smtp smtpSetting,string subject , string body,out string result)
 77     {
 78         SmtpClient smtpClient = new SmtpClient();
 79         result="";
 80         if(smtpSetting != null)
 81         {
 82             smtpClient.Host = smtpSetting.Host;
 83             smtpClient.Port = smtpSetting.Port;
 84             smtpClient.EnableSsl = smtpSetting.EnableSsl;
 85
 86
 87             if(!String.IsNullOrEmpty(smtpSetting.UserName) && !String.IsNullOrEmpty(smtpSetting.Password))
 88             {
 89                 try
 90                 {
 91                     smtpClient.UseDefaultCredentials = false;
 92                     smtpClient.Credentials = new NetworkCredential(smtpSetting.UserName , smtpSetting.Password);
 93
 94                     if(!string.IsNullOrEmpty(smtpSetting.From) && smtpSetting.To!=null && smtpSetting.To.Length>0)
 95                     {
 96                         MailMessage message = new MailMessage();
 97                         message.From = new MailAddress(smtpSetting.From , smtpSetting.From);
 98                         foreach(string item in smtpSetting.To)
 99                         {
100                             message.To.Add(new MailAddress(item));
101                         }
102                         message.Subject = subject;
103                         message.Body = body;
104                         message.IsBodyHtml = true;
105
106                         smtpClient.Send(message);
107                         return true;
108                     }
109                 }
110                 catch(Exception e)
111                 {
112                     result=e.Message;
113                     return false;
114                 }
115
116             }
117
118         }
119         return false;
120     }
121
122     public bool IsReusable
123     {
124         get
125         {
126             return false;
127         }
128     }
129 }

SendMail

 1     public   class Smtp
 2     {
 3         public Smtp() { }
 4
 5         public bool EnableSsl { get; set; }
 6         public string From { get; set; }
 7         public string Host { get; set; }
 8         public string Password { get; set; }
 9         public int Port { get; set; }
10         public string[] To { get; set; }
11         public string UserName { get; set; }
12     }

Smtp

转载于:https://www.cnblogs.com/AspDotNetMVC/p/2831470.html

SMTP命令 发送邮件 DOS命令相关推荐

  1. linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...

    满意答案 iedsa3641 推荐于 2019.09.13 采纳率:56%    等级:8 已帮助:361人 Linux是一个非常优秀的操作系统,与MS-WINDOWS相比具有可靠.稳定.速度快等优点 ...

  2. Windows命令行(DOS命令)教程

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...

  3. cmd命令和dos命令有什么不同?

    知识点笔记: cmd 在windows下是DOS模拟器,能运行绝大部分DOS命令,但是不是真正的DOS,DOS是一个操作系统,而CMD只是在WINDOWS下面模拟DOS环境. 一.CMD命令 1 . ...

  4. Shell命令、Dos命令和批处理命令

    1.小结 定义:DOS与Windows中cmd的区别:操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系 ...

  5. Linux命令与dos命令对比记忆

    命令 Linux DOS 帮助 commond --help commond /? 查看IP ifconfig ipconfig 磁盘操作 cd  cd  (更换磁盘需 /d) 文件操作 cp mv ...

  6. windows常用命令行(DOS)命令

    打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd ...

  7. 计算机网络命令dos命令大全,DOS命令大全:Ipconfig命令详解 – itShouce

    显示所有当前的 TCP/IP 网络配置值.刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置.使用不带参数的 ipconfig 可以显示所有适配器的 IP 地址.子网掩码.默认网关. M ...

  8. cmd调取windows组件的dos命令大全和常用网络工具,及Linux系统下命令大全

    前言 windows与liunx系统,有许多相同,但有些不通的地方,通过一下的比较,可以加深记忆.若在windows下,某个组件不工作,或者网络不通,或许cmd调取windows组件的dos命令大全: ...

  9. 代码详细解析简单常用DOS命令 java会用这些就够了!

    DOS(磁盘操作系统)常用命令 打开DOS命令窗口 实用小知识tips 查看目录:dir(directory) 命令 查看目录(树型):tree命令 创建目录:mkdir 或 md(make dire ...

最新文章

  1. maven 命令创建多模块工程
  2. 拳皇重生服务器维护,《拳皇97 OL》3月24日更新维护公告
  3. 堆排序分析(大根堆为例,由小到大排序)
  4. Python3 CookBook | 数字处理
  5. 11.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。...
  6. Java 命令行编译项目
  7. ASP.NET(c#)常用类函数
  8. 【毕业答辩】如何制作优秀的毕业论文答辩PPT?
  9. NodeMCU-ESP8266开发(VSCODE+PlatformIO+Arduino框架):第3篇--Blinker_MIOT_LIGHT(点灯科技APP控制+小爱同学控制)
  10. 计算机cpu基础知识ppt,计算机硬件基础知识ppt课件
  11. C语言IDE和编辑器比较
  12. 关于antd table展开行expandable的坑和解决办法
  13. 分享几个音乐下载网站
  14. 塔防三国志服务器维护时间,塔防三国志中期玩家教程攻略详解
  15. Sikerio --《只狼》
  16. 精打教程(144)拼多多一联电子面单修改模板
  17. 最大流(标号法 Ford-Fulkerson算法)
  18. CSDN新版个人空间介绍之三——代码与收藏
  19. 打印机服务出现问题的解决方法
  20. Python 第三方模块 统计1 statsmodels模块1 简介,回归

热门文章

  1. erp软件的主要功能
  2. 天玑9000+和骁龙8gen1+哪个性能更强 两者配置对比
  3. 《数据结构与算法 Python语言实现》书评与学习心得
  4. Conmi的正确答案——Unable to attach or mount volumes: unmounted volum...timed out waiting for the condition
  5. 使用AWS最便宜的GPU实例  from 动手学深度学习v2 李沐大神
  6. 被Win10自带杀毒软件自动误删除的exe从这里找
  7. 联想x3650服务器安装硬盘,IBM x3650 M2服务器系统安装攻略(组图)
  8. 解决Win10 丢失蓝牙功能的问题
  9. uni-app:使用uni.downloadFile下载文件并保存到手机
  10. 王佩丰 Excel 基础24讲 | 学习笔记(全)