在互联网竞争日趋激烈的今天,邮箱成为了每位工作人士必不可少的一样辅助工具,我呢,每日都要发送邮件,对邮件的发送当然其原理也很简单,下面简单的实现以下发送的代码:
首先,设计了一下界面:
<div >
<table>
<tr><td>收件人:</td><td><input type="text" id="ReceveEmail" /></td></tr>
<tr><td>主题:</td><td><input type="text" id="Themes" /></td></tr>
<tr><td>附件:</td><td><input type="file" id="attach" name="attach" runat="server" /></td></tr>
<tr><td>正文:</td><td><textarea cols="40" rows="10" id="Content"></textarea></td></tr>
</table>
<input type="button" id="SendEmail" value="发送" onclick="SendEmail()"/><span id="Send" style="display:none" >Sending.....</span>
</div>
这里呢,我是用Ajax来实现的,但是有一个问题没能解决,就是在Firefox下邮件的附件不能进行发送了很遗憾,希望各位大虾多多指教,当点击"发送"时,解释执行以下这段脚本
<script type="text/javascript" language="javascript">
function SendEmail() {
var ReceveEmail = $("#ReceveEmail").val();
var Themes = $("#Themes").val();
var Content = $("#Content").val();
var Attach ='<%=FilePath %>';
if (navigator.userAgent.indexOf("MSIE") != -1) {
Attach = document.getElementById("attach").value;
}
else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
alert('此操作被浏览器拒绝!请在浏览器地址栏输入"about:config"并回车然后将[signed.applets.codebase_principal_support]设置为"true"');
return;
}
var Attach= document.getElementById("attach").value;
// var Attach = document.getElementById("attach").files[0].getAsDataURL();
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath(Attach);
}
catch (e) {
if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert(' 无法加载文件 ');
return;
}
}
if (ReceveEmail != "" || Themes != "" || Content != "") {
$.ajax({
type: "POST",
url: "../AjaxPro.aspx?_Action=SendEmail",
data: { "ReceveEmail": escape(ReceveEmail), "Themes": Themes, "Content": Content, "Attach": Attach },
beforeSend: function () {
$("#Send").show();
},
success: function (Msg) {
if (Msg) {
$("#Send").hide();
alert(Msg);
}
}
});
}
}
</script>
将值post到了"../AjaxPro.aspx?_Action=SendEmail"这个页面进行处理
///[code=csharp]
///[WebMethod]
/// <summary>
/// 简单的邮箱发送功能
/// </summary>
public void SendEmail()
{
string ReceviceEmail=Request["ReceveEmail"].Trim().ToString();
string Themes=Request["Themes"].Trim().ToString();
string Content=Request["Content"].Trim().ToString();
string Attach = Request["Attach"].Trim().ToString();
string[] ToEmail=Regex.Split(ReceviceEmail,";",RegexOptions.IgnoreCase);
string DisplayName = "";
string Addre = "";
MailMessage message = new MailMessage();//这里是对邮件群发的设置
foreach (string Name in ToEmail)
{
if (Name != string.Empty)
{
if (Name.IndexOf("<") > 0)
{
DisplayName = Name.Substring(0, Name.IndexOf("<"));
Addre = Name.Substring((Name.IndexOf("<") + 1)).Replace(">", "");
}
else
{
DisplayName = string.Empty;
Addre = Name.Substring((Name.IndexOf("<") + 1)).Replace(">", "");
}
message.To.Add(new MailAddress(Addre,DisplayName));
}
}
message.Attachments.Add(new Attachment(Attach));
//设置邮箱的主题
message.Subject = Themes;
//设置邮箱主题内容的编码格式
message.SubjectEncoding = Encoding.Default;
//设置邮件的正文
message.Body = Content;
//设置邮件正文格式为默认的
message.BodyEncoding = Encoding.Default;
//设置邮件正文格式为UTF-8的
//message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
//邮件的发件人的地址
message.From=new MailAddress("345686955@qq.com","孙旭柱");
//设置此邮件的优先级
message.Priority = MailPriority.Normal;
//这里设置qq的SMTP服务器地址
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";
//设置端口号
client.Port = 25;
client.UseDefaultCredentials = false;
//获取或设置用于验证发件人身份的凭据
client.Credentials = new System.Net.NetworkCredential("345686955@qq.com", "!sun3456");
//制定如何处理待发的邮件
client.DeliveryMethod = SmtpDeliveryMethod.Network;
//发送邮件
client.Send(message);
Msg = "发送成功";
}
就这样简单的邮箱发送功能就实现了,在火狐下要进行设置,在地址栏中输入about:confing然后按提示进行设置就可以了,当中对邮箱没有进行格式的验证,以及为空的验证,这里设置的是qqde SMTP的服务器地址,如有哪里写的不妥之处请来信指教
谢谢!