以下是一个Socket发邮件的类,所有邮箱发邮件没问题,但是收到的邮件:
1.只有Sina和Gmail显示正文(content-type=text/html),其它的邮箱正文均为空。
2.邮件多了一些不必要的内容:charset="iso-8859-1" Content-Transfer-Encoding: text/html;cccccccccppppppppppppp X-CM-TRANSID:DMmowKAL+wRIggBOWZ8bAA--.14986S2 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUDNVkUUUUU Message-Id: <[email protected]> Date: Tue, 21 Jun 2011 19:36:41 +0800 (CST) Sender: [email protected] X-CM-SenderInfo: xprr0kqsyuqiyswou0bp/1tbi4xhlSU3Lgzy4jwABsY
/// <summary>
/// TcpClient派生类,用来进行SMTP服务器的连接工作
/// </summary>
public class SMTPClient : TcpClient
{
public bool isConnected()
{
return Active;
} public void SendCommandToServer(string Command)
{
NetworkStream ns = this.GetStream();
byte[] WriteBuffer;
WriteBuffer = new byte[1024];
WriteBuffer = Encoding.Default.GetBytes(Command);
ns.Write(WriteBuffer, 0, WriteBuffer.Length);
return;
}
public string GetServerResponse()
{
int StreamSize;
string ReturnValue = "";
byte[] ReadBuffer;
NetworkStream ns = this.GetStream();
ReadBuffer = new byte[1024];
StreamSize = ns.Read(ReadBuffer, 0, ReadBuffer.Length);
if (StreamSize == 0)
{
return ReturnValue;
}
else
{
ReturnValue = Encoding.Default.GetString(ReadBuffer);
return ReturnValue;
}
} public bool DoesStringContainSMTPCode(string s, string SMTPCode)
{
return (s.IndexOf(SMTPCode, 0, 10) == -1) ? false : true;
} } //结束类 /// <summary>
/// 发送邮件类
/// </summary>
public class SMTPMail
{
/// <summary>
/// 错误反馈信息
/// </summary>
private string strErrMessage = null; /// <summary>
/// SMTP服务器反馈的信息
/// </summary>
private string strResponse; /// <summary>
/// 构造函数
/// </summary>
public SMTPMail()
{
strErrMessage = "";
strResponse = "";
} /// <summary>
/// 取得错误反馈信息
/// </summary>
public string ErrorMessage
{
get
{
return strErrMessage;
}
} /// <summary>
/// 取得SMTP服务器反馈的信息
/// </summary>
public string ServerResponse
{
get
{
return strResponse;
}
} /// <summary>
/// 邮件发送优先级
/// </summary>
public enum Prioritys
{
/// <summary>
/// 最高级别
/// </summary>
HIGH = 1,
/// <summary>
/// 默认级别
/// </summary>
NORMAL = 3,
/// <summary>
/// 最低级别
/// </summary>
LOW = 5
} public bool SendMail(MailModel model,string to)
{
try
{
string strResponseNumber;
SMTPClient smtpcMail = new SMTPClient();
smtpcMail.Connect(model.Smtp, 25);
bool bolConnect = smtpcMail.isConnected(); //判断是否进行了连接
if (!bolConnect)
{
strErrMessage = "Smtp服务器连接失败...";
return false;
} //读取反馈信息
strResponseNumber = smtpcMail.GetServerResponse();
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber, "220"))
{
this.strResponse += strResponseNumber;
}
else
{
this.strErrMessage = "连接失败" + strResponseNumber;
return false;
} string[] strSendBuffer = new string[9];
string[] strResponseCode = { "220","235", "250", "251","334", "354", "221","550" }; string strData = "";
strData = string.Concat("HELO ", model.Smtp);
strData = string.Concat(strData, "\r\n");
strSendBuffer[0] = strData; strData = "";
strData = string.Concat("auth login ");
strData = string.Concat(strData, "\r\n");
strSendBuffer[1] = strData; strData = "";
strData = string.Concat(Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(model.Username)));
strData = string.Concat(strData, "\r\n");
strSendBuffer[2] = strData; strData = "";
strData = string.Concat(Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(model.Password)));
strData = string.Concat(strData, "\r\n");
strSendBuffer[3] = strData; strData = "";
strData = string.Concat("MAIL FROM: ", "<" + model.Usermail + ">");
strData = string.Concat(strData, "\r\n");
strSendBuffer[4] = strData; strData = "";
strData = string.Concat("RCPT TO: ", "<" + to + ">");
strData = string.Concat(strData, "\r\n");
strSendBuffer[5] = strData; strData = "";
strData = string.Concat("DATA", "\r\n");
strSendBuffer[6] = strData; strData = "";
strData = string.Concat("From: ", model.Sender + "<" + model.FackSender + ">");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "To: ");
strData = string.Concat(strData, model.FackReMail + "<" + model.FackReMail + ">");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "Subject: ");
strData = string.Concat(strData, model.Subject);
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "MIME-Version: 1.0");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "X-Priority: " + 3);
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "X-MSMail-Priority: " + 3);
strData = string.Concat(strData, "\r\n");
//if (Html == true)
//{
strData = string.Concat(strData, "Content-Type: text/html;");
//}
//else
//{
// strData = string.Concat(strData, "Content-Type: text/plain;");
//}
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "charset=\"iso-8859-1\"");
strData = string.Concat(strData, "\r\n");
//if (Html == true)
//{
strData = string.Concat(strData, "Content-Transfer-Encoding: text/html;");
//}
//else
//{
// strData = string.Concat(strData, "Content-Transfer-Encoding: text/plain;");
//}
//strData = string.Concat(strData, "\r\n");
//strData = string.Concat(strData, "Content-Base: \"" + Base + "\"");
//strData = string.Concat(strData, "\r\n" + "\r\n"); strData = string.Concat(strData, model.Body);
strData = string.Concat(strData, "\r\n.\r\n");
strSendBuffer[7] = strData; strData = "";
strData = string.Concat(strData, "QUIT\r\n");
strSendBuffer[8] = strData; int i = 0; while (i < strSendBuffer.Length)
{
smtpcMail.SendCommandToServer(strSendBuffer[i]);
strResponseNumber = smtpcMail.GetServerResponse(); for (int j = 0; j < strResponseCode.Length; j++)
{
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber, strResponseCode[j]))
{
this.strResponse += strResponseNumber;
this.strResponse += "<br>";
break;
}
else
{
if (j == strResponseCode.Length - 1)
{
this.strErrMessage += strResponseNumber;
this.strErrMessage += strSendBuffer[i];
return false;
}
}
} i++;
} // 结束循环
return true;
}
catch (SocketException err)
{
this.strErrMessage += err.Message + " " + err.StackTrace;
return false;
}
catch (Exception e)
{
this.strErrMessage += e.Message + " " + e.StackTrace;
return false;
}
} //结束邮件发送方法 } // 结束类请大家优先帮忙解决一问题,二问题慢慢处理也可!100分送上!
1.只有Sina和Gmail显示正文(content-type=text/html),其它的邮箱正文均为空。
2.邮件多了一些不必要的内容:charset="iso-8859-1" Content-Transfer-Encoding: text/html;cccccccccppppppppppppp X-CM-TRANSID:DMmowKAL+wRIggBOWZ8bAA--.14986S2 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUDNVkUUUUU Message-Id: <[email protected]> Date: Tue, 21 Jun 2011 19:36:41 +0800 (CST) Sender: [email protected] X-CM-SenderInfo: xprr0kqsyuqiyswou0bp/1tbi4xhlSU3Lgzy4jwABsY
/// <summary>
/// TcpClient派生类,用来进行SMTP服务器的连接工作
/// </summary>
public class SMTPClient : TcpClient
{
public bool isConnected()
{
return Active;
} public void SendCommandToServer(string Command)
{
NetworkStream ns = this.GetStream();
byte[] WriteBuffer;
WriteBuffer = new byte[1024];
WriteBuffer = Encoding.Default.GetBytes(Command);
ns.Write(WriteBuffer, 0, WriteBuffer.Length);
return;
}
public string GetServerResponse()
{
int StreamSize;
string ReturnValue = "";
byte[] ReadBuffer;
NetworkStream ns = this.GetStream();
ReadBuffer = new byte[1024];
StreamSize = ns.Read(ReadBuffer, 0, ReadBuffer.Length);
if (StreamSize == 0)
{
return ReturnValue;
}
else
{
ReturnValue = Encoding.Default.GetString(ReadBuffer);
return ReturnValue;
}
} public bool DoesStringContainSMTPCode(string s, string SMTPCode)
{
return (s.IndexOf(SMTPCode, 0, 10) == -1) ? false : true;
} } //结束类 /// <summary>
/// 发送邮件类
/// </summary>
public class SMTPMail
{
/// <summary>
/// 错误反馈信息
/// </summary>
private string strErrMessage = null; /// <summary>
/// SMTP服务器反馈的信息
/// </summary>
private string strResponse; /// <summary>
/// 构造函数
/// </summary>
public SMTPMail()
{
strErrMessage = "";
strResponse = "";
} /// <summary>
/// 取得错误反馈信息
/// </summary>
public string ErrorMessage
{
get
{
return strErrMessage;
}
} /// <summary>
/// 取得SMTP服务器反馈的信息
/// </summary>
public string ServerResponse
{
get
{
return strResponse;
}
} /// <summary>
/// 邮件发送优先级
/// </summary>
public enum Prioritys
{
/// <summary>
/// 最高级别
/// </summary>
HIGH = 1,
/// <summary>
/// 默认级别
/// </summary>
NORMAL = 3,
/// <summary>
/// 最低级别
/// </summary>
LOW = 5
} public bool SendMail(MailModel model,string to)
{
try
{
string strResponseNumber;
SMTPClient smtpcMail = new SMTPClient();
smtpcMail.Connect(model.Smtp, 25);
bool bolConnect = smtpcMail.isConnected(); //判断是否进行了连接
if (!bolConnect)
{
strErrMessage = "Smtp服务器连接失败...";
return false;
} //读取反馈信息
strResponseNumber = smtpcMail.GetServerResponse();
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber, "220"))
{
this.strResponse += strResponseNumber;
}
else
{
this.strErrMessage = "连接失败" + strResponseNumber;
return false;
} string[] strSendBuffer = new string[9];
string[] strResponseCode = { "220","235", "250", "251","334", "354", "221","550" }; string strData = "";
strData = string.Concat("HELO ", model.Smtp);
strData = string.Concat(strData, "\r\n");
strSendBuffer[0] = strData; strData = "";
strData = string.Concat("auth login ");
strData = string.Concat(strData, "\r\n");
strSendBuffer[1] = strData; strData = "";
strData = string.Concat(Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(model.Username)));
strData = string.Concat(strData, "\r\n");
strSendBuffer[2] = strData; strData = "";
strData = string.Concat(Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(model.Password)));
strData = string.Concat(strData, "\r\n");
strSendBuffer[3] = strData; strData = "";
strData = string.Concat("MAIL FROM: ", "<" + model.Usermail + ">");
strData = string.Concat(strData, "\r\n");
strSendBuffer[4] = strData; strData = "";
strData = string.Concat("RCPT TO: ", "<" + to + ">");
strData = string.Concat(strData, "\r\n");
strSendBuffer[5] = strData; strData = "";
strData = string.Concat("DATA", "\r\n");
strSendBuffer[6] = strData; strData = "";
strData = string.Concat("From: ", model.Sender + "<" + model.FackSender + ">");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "To: ");
strData = string.Concat(strData, model.FackReMail + "<" + model.FackReMail + ">");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "Subject: ");
strData = string.Concat(strData, model.Subject);
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "MIME-Version: 1.0");
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "X-Priority: " + 3);
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "X-MSMail-Priority: " + 3);
strData = string.Concat(strData, "\r\n");
//if (Html == true)
//{
strData = string.Concat(strData, "Content-Type: text/html;");
//}
//else
//{
// strData = string.Concat(strData, "Content-Type: text/plain;");
//}
strData = string.Concat(strData, "\r\n");
strData = string.Concat(strData, "charset=\"iso-8859-1\"");
strData = string.Concat(strData, "\r\n");
//if (Html == true)
//{
strData = string.Concat(strData, "Content-Transfer-Encoding: text/html;");
//}
//else
//{
// strData = string.Concat(strData, "Content-Transfer-Encoding: text/plain;");
//}
//strData = string.Concat(strData, "\r\n");
//strData = string.Concat(strData, "Content-Base: \"" + Base + "\"");
//strData = string.Concat(strData, "\r\n" + "\r\n"); strData = string.Concat(strData, model.Body);
strData = string.Concat(strData, "\r\n.\r\n");
strSendBuffer[7] = strData; strData = "";
strData = string.Concat(strData, "QUIT\r\n");
strSendBuffer[8] = strData; int i = 0; while (i < strSendBuffer.Length)
{
smtpcMail.SendCommandToServer(strSendBuffer[i]);
strResponseNumber = smtpcMail.GetServerResponse(); for (int j = 0; j < strResponseCode.Length; j++)
{
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber, strResponseCode[j]))
{
this.strResponse += strResponseNumber;
this.strResponse += "<br>";
break;
}
else
{
if (j == strResponseCode.Length - 1)
{
this.strErrMessage += strResponseNumber;
this.strErrMessage += strSendBuffer[i];
return false;
}
}
} i++;
} // 结束循环
return true;
}
catch (SocketException err)
{
this.strErrMessage += err.Message + " " + err.StackTrace;
return false;
}
catch (Exception e)
{
this.strErrMessage += e.Message + " " + e.StackTrace;
return false;
}
} //结束邮件发送方法 } // 结束类请大家优先帮忙解决一问题,二问题慢慢处理也可!100分送上!
解决方案 »
- 用HttpWebRequest发送请求给服务器,在GetResponseStream中不是我想要的页面
- 关于产生随机数~~高手进来~
- C# :怎样生成动态菜单?希望大家可以提供学习的参考的例子和相关书籍。谢谢!
- 我的黑白棋程序2.0版发布了(棋力已经大增!对AI或黑白棋感兴趣的进来)
- 在线求救!!急急!!!!
- 高手,我遇上了一个基础的问题?
- 配置asp.net的问题
- 提问:这里怎么结贴??我的问题解决了但不知道怎么给分!:-(
- 请教C#与VB.Net的区别
- 救急!!!!!!c#的函数库在那里可以找到???
- C# httpwebrequest 登录 www.weibo.com 求助
- visual studio 2008的后台滚动条
汗 现在只能做到收取收件箱的