string[] SenderAdder=new String[1];
string[] ServerAdder=new String[1];
string[] FJAdder=new String[1];
SenderAdder[0]="[email protected]";
// ServerAdder[0]="http://mail.yankee.com.cn/exchange/";
FJAdder[0]="";
MailSender MS=new MailSender();
// MS.IsHtml=true;
MS.HtmlBody="dsfdsafdsafdsa";
MS.Server="miss1"; //邮件服务器名
MS.Password="111";
MS.UserName="caolh";
MS.Subject="sdfdsfds";
MS.From="[email protected]";发件人地址
MS.To=SenderAdder;收件人地址
MS.Port=25;
MS.send(); (注:调用SendMail()的方法;)
private void SendMail()
{
// 创建TcpClient对象, 并建立连接
TcpClient tcpNewClient = null;
try
{
tcpNewClient = new TcpClient (m_strServer, m_iPort);
}
catch (Exception)
{
throw new Exception ("无法连接服务器");
} ReadString (tcpNewClient.GetStream());//获取连接信息 // 开始进行服务器认证
// 如果状态码是250则表示操作成功
if (!Command (tcpNewClient.GetStream(), "EHLO Localhost", "250"))
{
tcpNewClient.Close();
throw new Exception ("登陆阶段失败");
} if (m_strUserName != "")
{
// 需要身份验证
if (!Command (tcpNewClient.GetStream(), "AUTH LOGIN", "334"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
} // 此处将username转换为Base64码
string nameB64 = ToBase64 (m_strUserName);
if (!Command (tcpNewClient.GetStream(), nameB64, "334"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
} // 此处将m_strPassWord转换为Base64码
string passB64 = ToBase64 (m_strPassWord);
if (!Command (tcpNewClient.GetStream(), passB64, "235"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
}
}
// 准备发送
WriteString (tcpNewClient.GetStream(), "mail From: " + m_strFrom);
for(int i=0;i<m_strTo.Length;i++)
{
WriteString (tcpNewClient.GetStream(), "rcpt m_strTo: " + m_strTo[i]);
}
WriteString (tcpNewClient.GetStream(), "data"); // 发送邮件头
WriteString (tcpNewClient.GetStream(), "Date: " + DateTime.Now); // 时间
WriteString (tcpNewClient.GetStream(), "From: " + m_strFromName + "<" + m_strFrom + ">"); // 发件人
WriteString (tcpNewClient.GetStream(), "Subject: " + m_strSubject); // 主题
WriteString (tcpNewClient.GetStream(), "To:" + m_strToName + "<" + m_strTo + ">"); // 收件人 //邮件格式
WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed; boundary=\"unique-boundary-1\"");
WriteString (tcpNewClient.GetStream(), "Reply-To:" + m_strFrom); // 回复地址
WriteString (tcpNewClient.GetStream(), "X-Priority:" + m_iPriority); // 优先级
WriteString (tcpNewClient.GetStream(), "MIME-Version:1.0"); // MIME版本 // 数据ID,随意
// WriteString (tcpNewClient.GetStream(), "Message-Id: " + DateTime.Now.ToFileTime() + "@security.com");
WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding); // 内容编码
WriteString (tcpNewClient.GetStream(), "X-Mailer:JcPersonal.Utility.MailSender"); // 邮件发送者
WriteString (tcpNewClient.GetStream(), ""); WriteString (tcpNewClient.GetStream(), ToBase64 ("This is a multi-part message in MIME format."));
WriteString (tcpNewClient.GetStream(), ""); // 从此处开始进行分隔输入
WriteString (tcpNewClient.GetStream(), "--unique-boundary-1"); // 在此处定义第二个分隔符
WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/alternative;Boundary=\"unique-boundary-2\"");
WriteString (tcpNewClient.GetStream(), ""); if(!m_bIsHtml)
{
// 文本信息
WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");
WriteString (tcpNewClient.GetStream(), "Content-Type: text/plain;charset=" + m_strLanguageEncoding);
WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);
WriteString (tcpNewClient.GetStream(), "");
WriteString (tcpNewClient.GetStream(), m_strTxtBody);
WriteString (tcpNewClient.GetStream(), "");//一个部分写完之后就写如空信息,分段
WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的结束符号,尾巴后面多了--
WriteString (tcpNewClient.GetStream(), "");
}
else
{
//html信息
WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed");
WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");
WriteString (tcpNewClient.GetStream(), "Content-Type: text/html;charset=" + m_strLanguageEncoding);
WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);
WriteString (tcpNewClient.GetStream(), "");
WriteString (tcpNewClient.GetStream(), m_strHtmlBody);
WriteString (tcpNewClient.GetStream(), "");
WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的结束符号,尾巴后面多了--
WriteString (tcpNewClient.GetStream(), "");
} // 发送附件
// 对文件列表做循环
for (int i = 0; i < m_alAttachments.Count; i++)
{
WriteString (tcpNewClient.GetStream(), "--unique-boundary-1"); // 邮件内容分隔符
WriteString (tcpNewClient.GetStream(), "Content-Type: application/octet-stream;name=\"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "\""); // 文件格式
WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding: base64"); // 内容的编码
WriteString (tcpNewClient.GetStream(), "Content-Disposition:attachment;filename=\"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "\""); // 文件名
WriteString (tcpNewClient.GetStream(), "");
WriteString (tcpNewClient.GetStream(), ((AttachmentInfo)m_alAttachments[i]).Bytes); // 写入文件的内容
WriteString (tcpNewClient.GetStream(), "");
} Command (tcpNewClient.GetStream(), ".", "250"); // 最后写完了,输入"." // 关闭连接
tcpNewClient.Close ();
}
解决方案 »
- 点击邮件里的链接跳转到一个新画面但是新画面的css样式和js脚本都没用(不显示)
- gridview 模板列含有image 如果导出到excel
- 动态生成控件问题
- 关于动态加载textbox
- 我装的.NET之前用得好好的,后来有3个月没用.现在出现了这样的问题,请帮助我!
- 线程能不能讲一下
- datagrid处于编辑状态时算column号问题(有些column设置为readonly)
- e.Item.Cells[1].Controls[1]) 和e.Item.FindControl("ID"))有什么区别?FindControl如何使用呀
- callme被执行得时候,,没有显示我想要得 键值,如何解决?
- 请问在accessXP和asp.net ,c#中怎样用datagrid
- 别人用rtf格式写的文章,我现在要用WEb显示或读取出来,马上结贴
- 高手们 给点建议 (急急)
The first digital of the three digitals in response message indicates:
1: command accepted, waiting for confirm
2: command executed
3: command accepted, waiting for more information
4: command refused
5: command failed
MS.Server屬性用來指明服務器IP地址或者域名。你自己寫的代碼怎麽這個都不知道?抄的?