http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4372|回复: 1

[学生提问] 今天做了一个简单的邮件系统,但是老是报502错误求大神帮助

[复制链接]
发表于 2016-4-14 11:02:05 | 显示全部楼层 |阅读模式
附上具体代码using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Net.Mail;
using System.Net.Mime;
namespace 利用TCPClient类直接发送邮件
{
    public partial class Form1 : Form
    {
        TcpClient smtpSrv;
        NetworkStream netStream;
        string CRLF = "\r\n";
        public Form1()
        {
            InitializeComponent();
        }
        private void WriteStream(string strCmd)
        {
            //CRLF表示结束符
            strCmd += CRLF;
            //将字符串转换为字节数组
            byte[] bw = System.Text.Encoding.Unicode.GetBytes(strCmd);
            //将字节数组写入网络连接
            netStream.Write(bw, 0, bw.Length);
        }
        private string AuthStream(string strCmd)
        {
            try
            {
                //将字符串转化为字节数组
                byte[] by = System.Text.Encoding.Default.GetBytes(strCmd);
                //将字节数组转化为Base64编码形式的字符串
                strCmd = Convert.ToBase64String(by);
            }
            catch (Exception err) { return err.ToString(); }
            return strCmd;
        }

        private void ButtonSend_Click(object sender,System.EventArgs e)
        {
            //将信息列表框清空,该信息列表框用来存放SMTP邮件服务器返回的信息
            listBoxMsg.Items.Clear();
            try
            {
            //用来存放客户端向服务器端发送的字符串
            string data;
            //将进度条控件对象显示出来,反应邮件的发送速度
            progressBar1.Visible = true;
            labelp.Visible = true;
            //设置进度条的最小值,以防多次发送邮件时使用
            progressBar1.Value = 0;
            //建立与SMTP服务器的连接
            smtpSrv = new TcpClient(TextBoxSrv.Text, 25);
            //获取一个Networkstream对象,以便通过建立好的连接接收和发送数据
            netStream = smtpSrv.GetStream();
            //产生一个StreamReader对象,用来从流中读取数据
            StreamReader rdStrm = new StreamReader(smtpSrv.GetStream());
            //向服务器发送EHLO Local请求建立连接
            WriteStream("EHLO Local");
            //读取服务器返回信息,写入列表信息框
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            //进度条值递增
            progressBar1.Value++;
            //向服务器发送AUTH LOGIN请求认证
            WriteStream("AUTH LOGIN");
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
            data = TextBoxUser.Text;
            //转换成Base64编码形式
            data = AuthStream(data);
            //向服务器发送用户名
            WriteStream(data);
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
            data = TextBoxPwd.Text;
            data = AuthStream(data);
            //向服务器发送口令
            WriteStream(data);
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
            //开始发送邮件的信封
            //发送发送人的邮件地址
            data = "MAIL FROM:<" + TextBoxSend.Text + ">";
            WriteStream(data);
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
           //发送接收人的邮件地址
            data = "RCPT TO:<" + TextBoxRev.Text + ">";
            WriteStream(data);
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
           //开始发送数据
            WriteStream("DATA");
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            progressBar1.Value++;
           //开始发送邮件的首部字段
          //发送日期
            data = "DATE:" + DateTime.Now;
            WriteStream(data);
            progressBar1.Value++;
           //发送邮件发送者的信息
            data = "FROM:" + TextBoxSend.Text;
            WriteStream(data);
            progressBar1.Value++;
          //发送邮件接收者的信息
            data = "TO:" + TextBoxRev.Text;
            WriteStream(data);
            progressBar1.Value++;
           //发送邮件的主题
            data = "SUBJECT:" + TextBoxSubject.Text;
            WriteStream(data);
            progressBar1.Value++;
            //发送回复地址
            data = "REPLY-TO:" + TextBoxSend.Text;
            WriteStream(data);
            progressBar1.Value++;
            //发送一个空行,表示首部结束,开始正文发送
            WriteStream("");
            progressBar1.Value++;
            //发送邮件的正文
            WriteStream(TextBoxMailText.Text);
            progressBar1.Value++;
                //发送"."表示文件内容结束
            WriteStream(".");
            progressBar1.Value++;
            listBoxMsg.Items.Add(rdStrm.ReadLine());
                //发送断开连接的命令
            WriteStream("QUIT");
            progressBar1.Value++;
            listBoxMsg.Items.Add(rdStrm.ReadLine());
            netStream.Close();
            progressBar1.Visible = false;
            labelp.Visible = false;
                //邮件发送成功
            MessageBox.Show("邮件发送成功", "成功");
          }
            catch(Exception ex)
            {
                //捕捉操作中的异常,并显示
                MessageBox.Show(ex.ToString(), "操作错误!");
            }
       }
    }
}
求助啊

更多图片 小图 大图
组图打开中,请稍候......


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-4-22 09:34:02 | 显示全部楼层
可以在线询问一下。http://www.manonggu.com/biancheng/323  
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-8 10:28

© 2014-2021

快速回复 返回顶部 返回列表