首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net 2.0 邮件发送有关问题

2012-01-28 
asp.net 2.0 邮件发送问题MailMessageemnewMailMessage()em.Totoem.Fromfromem.Subjectsubjectem.

asp.net 2.0 邮件发送问题
MailMessage   em   =   new   MailMessage();
em.To   =   to;
em.From   =   from;
em.Subject   =   subject;
em.Body   =   message;

//Found   out   how   to   send   authenticated   email   via   System.Web.Mail   at   http://SystemWebMail.com   (fact   3.8)
if(this.UserName   !=   null   &&   this.Password   !=   null)
{
em.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ",   "1 ");//basic   authentication
em.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendusername ",   this.UserName);   //set   your   username   here
em.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendpassword ",   this.Password);//set   your   password   here

}

SmtpMail.SmtpServer   =   this.SmtpServer;
SmtpMail.Send(em);
                        }
我看了   hiForumsaspnet   和CNBlogsDottext的源代码,他们发送邮件中有那段url,请问这个安全么?为什么还要加这个东西呢?另外,他们写的程序太深奥了,上面是CNBlogsDottext的发送邮件的,UserName   和Password这两个东西到底在哪里赋值的?我到处找不到,希望看过这两个工程的朋友来指点一下,两个工程都是   是.net1.1上的,而且是很久以前的代码了,看过的朋友,如果知道这段代码,就可以联想到跟这个有关的上下文了

[解决办法]
路过,学习
[解决办法]
应该是安全的!其实不用去理会他,如果你不要if那段代码,也是可以执行成功的。
[解决办法]
这是一个发邮件的类,你试试看吧。

using System;
using System.Net.Sockets;//用于处理网络连接
using System.IO; //用于处理附件的包
using System.Text;//用于处理文本编码
using System.Data;
using System.Net;

namespace Email
{
public class MailSend:TcpClient
{

/*SMTP服务器域名*/
private string strServer;
public string server
{
get
{
return strServer;
}
set
{
if(strServer!=value)
{
strServer=value;
}
}
}

/*SMTP服务器端口*/
private int strPort;
public int port
{
get
{
return strPort;
}
set
{
if(strPort!=value)
{
strPort=value;
}
}
}

/*用户名*/
private string strUse=null;
public String username
{
get
{
return strUse;
}
set
{
if(strUse!=value)
{
strUse=value;
}
}
}

/*密码*/
private string strPass=null;
public String password
{
get
{
return strPass;
}
set
{
if(strPass!=value)
{
strPass=value;
}
}
}

/*主题*/
private string strSub= " ";
public String subject
{
get
{
return strSub;
}
set
{
if(strSub!=value)
{
strSub=value;
}
}
}

/*文本内容*/
private string strBody= " ";
public String body
{
get
{
return strBody;
}
set
{
if(strBody!=value)
{
strBody=value;
}
}
}



/*超文本内容*/
private string strHtm= " ";
public String htmlbody
{
get
{
return strHtm;
}
set
{
if(strHtm!=value)
{
strHtm=value;
}
}
}

/*发件人地址*/
private string strFrom= " ";
public String from
{
get
{
return strFrom;
}
set
{
if(strFrom!=value)
{
strFrom=value;
}
}
}

/*收件人地址*/
private string strTo= " ";
public String to
{
get
{
return strTo;
}
set
{
if(strTo!=value)
{
strTo=value;
}
}
}

/*发件人姓名*/
private string strFName= " ";
public String fromname
{
get
{
return strFName;
}
set
{
if(strFName!=value)
{
strFName=value;
}
}
}

/*收件人姓名*/
private string strTName= " ";
public String toname
{
get
{
return strTName;
}
set
{
if(strTName!=value)
{
strTName=value;
}
}
}

/*邮件编码*/
private string strEncode= "8bit ";
public String encode
{
get
{
return strEncode;
}
set
{
if(strEncode!=value)
{
strEncode=value;
}
}
}

/*邮件优先级*/
private int intPriority=0;
public int priority
{
get
{
return intPriority;
}
set
{
if(intPriority!=value)
{
intPriority=value;
}
}
}

/*语言编码*/
private string strCharset= "gb2312 ";
public String charset
{
get
{
return strCharset;
}
set
{
if(strCharset!=value)
{
strCharset=value;
}
}
}


/*html邮件标志*/
private bool isHtml=false;
public bool html
{
get
{
return isHtml;
}
set
{
if(isHtml!=value)
{
isHtml=value;
}
}
}
private DataTable filelist;//附件列表 

public MailSend()
{
}

/*发送邮件*/
public void Send()
{
filelist = new DataTable();//已定义变量,初始化操作
filelist.Columns.Add(new DataColumn( "filename ",typeof(string)));//文件名
filelist.Columns.Add(new DataColumn( "filecontent ",typeof(string)));//文件内容

/*准备发送*/
WriteStream( "mail From: "+strFrom);
WriteStream( "rcpt to: "+strTo);
WriteStream( "data ");

/*发送邮件头*/
WriteStream( "Date: "+DateTime.Now);//时间
WriteStream( "From: "+strFName+ " < "+strFrom+ "> ");//发件人
WriteStream( "Subject: "+strSub);//主题
WriteStream( "To: "+strTName+ " < "+strTo+ "> ");//收件人

//邮件格式
WriteStream( "Content-Type: multipart/mixed; boundary=\ "unique-boundary-1\ " ");
WriteStream( "Reply-To: "+strFrom);//回复地址
WriteStream( "X-Priority: "+intPriority);//优先级
WriteStream( "MIME-Version:1.0 ");//MIME版本



//数据ID,随意
WriteStream( "Message-Id: "+DateTime.Now.ToFileTime()+ "@security.com ");
WriteStream( "Content-Transfer-Encoding: "+strEncode);//内容编码
WriteStream( "X-Mailer:DS Mail Sender V1.0 ");//邮件发送者
WriteStream( " ");

WriteStream(AuthStream( "This is a multi-part message in MIME format. "));
WriteStream( " ");

//从此处开始进行分隔输入
WriteStream( "--unique-boundary-1 ");

//在此处定义第二个分隔符
WriteStream( "Content-Type: multipart/alternative;Boundary=\ "unique-boundary-2\ " ");
WriteStream( " ");

if(!isHtml)
{
//文本信息
WriteStream( "--unique-boundary-2 ");
WriteStream( "Content-Type: text/plain;charset= "+strCharset);
WriteStream( "Content-Transfer-Encoding: "+strEncode);
WriteStream( " ");
WriteStream(strBody);
WriteStream( " ");//一个部分写完之后就写如空信息,分段
WriteStream( "--unique-boundary-2-- ");//分隔符的结束符号,尾巴后面多了--
WriteStream( " ");
}

else
{
//html信息
WriteStream( "--unique-boundary-2 ");
WriteStream( "Content-Type: text/html;charset= "+strCharset);
WriteStream( "Content-Transfer-Encoding: "+strEncode);
WriteStream( " ");
WriteStream(strHtm);
WriteStream( " ");
WriteStream( "--unique-boundary-2-- ");//分隔符的结束符号,尾巴后面多了--
WriteStream( " ");
}

//增加附件
Attachment();//这个方法是我们在上面讲过的,实际上他放在这
WriteStream( " ");
WriteStream( "--unique-boundary-1-- ");
if (!OperaStream( ". ", "250 "))//最后写完了,输入 ". "
{
this.Close(); //关闭连接
}
}

/*向服务器写入命令的方法*/
private void WriteStream(String strCmd)
{
Stream TcpStream;//定义操作对象
strCmd = strCmd + "\r\n "; //加入换行符
TcpStream =this.GetStream();//获取数据流

//将命令行转化为byte[]
byte[] bWrite = Encoding.GetEncoding(strCharset).GetBytes(strCmd.ToCharArray());

//由于每次写入的数据大小是有限制的,那么我们将每次写入的数据长度定在75个字节,一旦命令长度超过了75,就分步写入。
int start=0;
int length=bWrite.Length;
int page=0;
int size=75;
int count=size;
try
{
if (length> 75)
{

//数据分页
if ((length/size)*size <length)
page=length/size+1;
else
page=length/size;
for (int i=0;i <page;i++)
{
start=i*size;
if (i==page-1)
count=length-(i*size);
TcpStream.Write(bWrite,start,count);//将数据写入到服务器上
}
}
else
TcpStream.Write(bWrite,0,bWrite.Length);
}
catch(Exception)
{
}
}

热点排行