用Socket发邮件的代码(可以群发)

本文介绍了一个基于ASP.NET的简单群发邮件应用程序。通过该程序可以设置SMTP服务器、用户名及密码等信息,并支持向多个收件人发送带有特定主题和内容的电子邮件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qunFa.aspx文件的代码:

<%@ Page language="c#" Codebehind="qunFa.aspx.cs" AutoEventWireup="false" Inherits="liuwei.hanmail.qunFa" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  
<HEAD>
        
<title>qunFa</title>
<meta content="Microsoft Visual Studio .NET 7.1" name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE>
<meta content=JavaScript name=vs_defaultClientScript>
<meta content=http://schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema>
  
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id=Form1 method=post runat="server">
            
<asp:ListBox id="ListBoxMsg" style="Z-INDEX: 118; LEFT: 136px; POSITION: absolute; TOP: 344px"
                runat
="server" Width="440px" Height="184px"></asp:ListBox>
            
<asp:Label id="Label11" style="Z-INDEX: 108; LEFT: 120px; POSITION: absolute; TOP: 320px" runat="server">信息查看</asp:Label>
            
<asp:Label id="Label10" style="Z-INDEX: 117; LEFT: 112px; POSITION: absolute; TOP: 16px" runat="server">SMTP服务器地址</asp:Label>
            
<asp:Label id="Label9" style="Z-INDEX: 100; LEFT: 128px; POSITION: absolute; TOP: 48px" runat="server">用户名</asp:Label>
            
<asp:TextBox id="TextBoxSrv" style="Z-INDEX: 101; LEFT: 264px; POSITION: absolute; TOP: 24px"
                runat
="server" Width="240px"></asp:TextBox>
            
<asp:Label id="Label8" style="Z-INDEX: 102; LEFT: 360px; POSITION: absolute; TOP: 48px" runat="server">口令</asp:Label>
            
<asp:TextBox id="TextBoxUser" style="Z-INDEX: 103; LEFT: 192px; POSITION: absolute; TOP: 48px"
                runat
="server" Width="152px"></asp:TextBox>
            
<asp:TextBox id="TextBoxPwd" style="Z-INDEX: 104; LEFT: 416px; POSITION: absolute; TOP: 48px"
                runat
="server" Width="168px" TextMode="Password"></asp:TextBox>
            
<asp:Label id="Label4" style="Z-INDEX: 105; LEFT: 128px; POSITION: absolute; TOP: 80px" runat="server">发信人</asp:Label>
            
<asp:Label id="Label5" style="Z-INDEX: 106; LEFT: 360px; POSITION: absolute; TOP: 80px" runat="server">收信人</asp:Label>
            
<asp:TextBox id="TextBoxSend" style="Z-INDEX: 107; LEFT: 192px; POSITION: absolute; TOP: 80px"
                runat
="server"></asp:TextBox>
            
<asp:TextBox id="TextBoxRev" style="Z-INDEX: 109; LEFT: 416px; POSITION: absolute; TOP: 80px"
                runat
="server" Width="168px"></asp:TextBox>
            
<asp:Label id="Label6" style="Z-INDEX: 110; LEFT: 128px; POSITION: absolute; TOP: 112px" runat="server">主题</asp:Label>
            
<asp:TextBox id="TextBoxSubject" style="Z-INDEX: 112; LEFT: 192px; POSITION: absolute; TOP: 104px"
                runat
="server" Width="392px"></asp:TextBox>
            
<asp:TextBox id="TextBoxMailText" style="Z-INDEX: 113; LEFT: 144px; POSITION: absolute; TOP: 160px"
                runat
="server" Width="440px" TextMode="MultiLine" Height="120px"></asp:TextBox>
            
<asp:Label id="Label7" style="Z-INDEX: 114; LEFT: 128px; POSITION: absolute; TOP: 136px" runat="server">邮件内容</asp:Label>
            
<asp:Button id="ButtonSend" style="Z-INDEX: 115; LEFT: 464px; POSITION: absolute; TOP: 296px"
                runat
="server" Text="发送"></asp:Button>
            
<asp:Label id="LabelErr" style="Z-INDEX: 116; LEFT: 696px; POSITION: absolute; TOP: 136px"
                runat
="server"></asp:Label></FORM>
    
</body>
</HTML>

 

qunFa.aspx.cs的代码:

 

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace Sendmail
{
    
/// <summary>
    
/// qunFa 的摘要说明。
    
/// </summary>

    public class qunFa : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.Label LabelErr;
        
protected System.Web.UI.WebControls.Button ButtonSend;
        
protected System.Web.UI.WebControls.Label Label7;
        
protected System.Web.UI.WebControls.TextBox TextBoxMailText;
        
protected System.Web.UI.WebControls.TextBox TextBoxSubject;
        
protected System.Web.UI.WebControls.Label Label6;
        
protected System.Web.UI.WebControls.TextBox TextBoxRev;
        
protected System.Web.UI.WebControls.TextBox TextBoxSend;
        
protected System.Web.UI.WebControls.Label Label5;
        
protected System.Web.UI.WebControls.Label Label4;
        
protected System.Web.UI.WebControls.TextBox TextBoxPwd;
        
protected System.Web.UI.WebControls.TextBox TextBoxUser;
        
protected System.Web.UI.WebControls.Label Label8;
        
protected System.Web.UI.WebControls.TextBox TextBoxSrv;
        
protected System.Web.UI.WebControls.Label Label9;
        
protected System.Web.UI.WebControls.Label Label11;
        
protected System.Web.UI.WebControls.ListBox ListBoxMsg;
        
protected System.Web.UI.WebControls.Label Label10;

        TcpClient smtpSrv;
        NetworkStream netStrm;
        
string CRLF=" ";
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
        }


        
Web 窗体设计器生成的代码


        
private void ButtonSend_Click(object sender, System.EventArgs e)
        
{
            
this.ListBoxMsg.Items.Clear();
            
string[] userList=this.TextBoxRev.Text.Split(',');
            
for(int i=0;i<userList.Length;i++)
                Qun(userList[i]);
            

        }


        
public void Qun(string userList)
        
{
            
try
            
{
                
string data;
                smtpSrv
=new TcpClient(this.TextBoxSrv.Text,25);                
                netStrm
=smtpSrv.GetStream();
                StreamReader rdStrm
=new StreamReader(smtpSrv.GetStream());
                
this.WriteStream("EHLO Local");
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                
this.WriteStream("AUTH LOGIN");
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                data
=this.TextBoxUser.Text;
                data
=AuthStream(data);
                
this.WriteStream(data);
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                data
=this.TextBoxPwd.Text;
                data
=AuthStream(data);
                
this.WriteStream(data);
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                data
="MAIL FROM:<"+this.TextBoxSend.Text+">";
                
this.WriteStream(data);
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                data
="RCPT TO:<"+userList+">";
                
this.WriteStream(data);
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                
this.WriteStream("DATA");
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                data
="Date:"+DateTime.Now;
                
this.WriteStream(data);
                data
="From:"+this.TextBoxSend.Text;
                
this.WriteStream(data);            
                data
="TO:"+userList;
                
this.WriteStream(data);
                data
="SUBJECT:"+this.TextBoxSubject.Text;
                
this.WriteStream(data);
                data
="Reply-TO:"+this.TextBoxSend.Text;
                
this.WriteStream(data);
                
this.WriteStream("");
                
this.WriteStream(this.TextBoxMailText.Text);
                
this.WriteStream(".");
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                
this.WriteStream("QUIT");
                
this.ListBoxMsg.Items.Add(rdStrm.ReadLine());
                netStrm.Close();
                rdStrm.Close();
                
this.LabelErr.Text="发送成功!";
            }

            
catch(Exception ex)
            
{
                
this.LabelErr.Text=ex.ToString();
            }

        }

        
private void WriteStream(string strCmd)
        
{
            strCmd
+=CRLF;
            
byte[] bw=System.Text.Encoding.Default.GetBytes(strCmd);
            netStrm.Write(bw,
0,bw.Length);
        }


        
private string AuthStream(string strCmd)
        
{
            
try
            
{
                
byte[] by=System.Text.Encoding.Default.GetBytes(strCmd);
                strCmd
=Convert.ToBase64String(by);
            }

            
catch(Exception err)
            
{
                
return err.ToString();
            }

            
return strCmd;
        }

    }

}

 

注:多个收件人之间用逗号隔开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值