asp.net利用Jmail发送邮件和接收全部代码
2012-11-22 17:27
639 查看
利用Jmail发送邮件:
private void SendMailByJmail()
{
/**////建立发邮件类
jmail.MessageClass oJmailMessage = new jmail.MessageClass();
/**//// 字符集
oJmailMessage.Charset = "GB2312";
/**////附件的编码格式
oJmailMessage.Encoding = "BASE64";
oJmailMessage.ContentType = "text/html";
/**////是否将信头编码成iso-8859-1字符集
oJmailMessage.ISOEncodeHeaders = false;
/**//// 优先级
oJmailMessage.Priority = Convert.ToByte(1);
/**////发送人邮件地址
oJmailMessage.From = TxtEmail.Text.Trim();
/**////发送人姓名
oJmailMessage.FromName = TxtName.Text.Trim();
/**//// 邮件主题
oJmailMessage.Subject = txtSubject.Text.Trim();
/**////身份验证的用户名
oJmailMessage.MailServerUserName = TxtSmtpUser.Text.Trim();
/**////用户密码
oJmailMessage.MailServerPassWord = TxtSmtpPwd.Text.Trim();
/**////添加一个收件人,抄送人和密送人的添加和该方法是一样的,只是分别使用AddRecipientCC和RecipientBCC两个属性
///要是需要添加多个收件人,则重复下面的语句即可。添加多个抄送和密送人的方法一样
oJmailMessage.AddRecipient(txtReciver.Text.Trim(),"","");
if("" != upFile.PostedFile.FileName)
{
string attpath = upFile.PostedFile.FileName;
oJmailMessage.AddAttachment(@attpath,true,attpath.Substring(attpath.LastIndexOf(".")+1,3));//添加附件
}
/**////邮件内容
oJmailMessage.Body = txtContent.Text.Trim();
if(oJmailMessage.Send(TxtSmtServer.Text.Trim(),false))
{
Response.Write("发送成功!");
}
else
{
Response.Write("发送失败,请检查邮件服务器的设置!");
}
oJmailMessage = null;
}
/**////
/// 利用Jmail接收邮件
///
private void ReciveByJmail()
{
/**////建立收邮件对象
jmail.POP3Class popMail = new POP3Class();
/**////建立邮件信息接口
jmail.Message mailMessage;
/**////建立附件集接口
jmail.Attachments atts;
/**////建立附件接口
jmail.Attachment att;
try
{
popMail.Connect(TxtPopUser.Text.Trim(),TxtPopPwd.Text.Trim(),TxtPopServer.Text.Trim(),Convert.ToInt32(TxtPopPort.Text.Trim()));
/**////如果收到邮件
if(0 < popMail.Count)
{
/**////根据取到的邮件数量依次取得每封邮件
for(int i=1;i <= popMail.Count;i++)
{
/**////取得一条邮件信息
mailMessage = popMail.Messages[i];
/**////取得该邮件的附件集合
atts = mailMessage.Attachments;
/**////设置邮件的编码方式
mailMessage.Charset = "GB2312";
/**////设置邮件的附件编码方式
mailMessage.Encoding = "Base64";
/**////是否将信头编码成iso-8859-1字符集
mailMessage.ISOEncodeHeaders = false;
**////邮件的优先级
txtpriority.Text = mailMessage.Priority.ToString();
/**////邮件的发送人的信箱地址
txtSendMail.Text = mailMessage.From;
/**////邮件的发送人
txtSender.Text = mailMessage.FromName;
/**////邮件主题
txtSubject.Text = mailMessage.Subject;
/**////邮件内容
txtBody.Text = mailMessage.Body;
/**////邮件大小
txtSize.Text = mailMessage.Size.ToString();
for(int j=0;j62 {
/**////取得附件
att = atts[j];
/**////附件名称
string attname = att.Name;
/**////上传到服务器
att.SaveToFile("e://attFile//"+attname);
}
}
panMailInfo.Visible = true;
att = null;
atts = null;
}
else
{
Response.Write("没有新邮件!");
}
popMail.DeleteMessages();
popMail.Disconnect();
popMail = null;
}
catch
{
Response.Write("Warning!请检查邮件服务器的设置是否正确!");
}
}
发送邮件的代码如下:
using System;
usingSystem.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
usingSystem.Web.UI.WebControls;
using jmail;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
public partial class getemail :System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void sendEmail_Click(object sender, EventArgse)
{
#region
SmtpClient smtpClient = newSmtpClient("smtp.gmail.com", 587);
smtpClient.DeliveryMethod =SmtpDeliveryMethod.Network;
smtpClient.Credentials = newNetworkCredential("likeshan168@gmail.com","likeshannihao168");
MailMessage mail = newMailMessage("likeshan168@gmail.com",emailRec.Text.Trim());
mail.Subject =subject.Text.Trim();
mail.SubjectEncoding =System.Text.Encoding.UTF8;
mail.Body =emailbody.Text.Trim();
mail.BodyEncoding =System.Text.Encoding.UTF8;
smtpClient.EnableSsl =true;
string attafile =fileUpload.PostedFile.FileName;
if(!string.IsNullOrEmpty(attafile))//这里是添加附件的作用
{
#region//方法一
//string filename =Path.GetFileName(attafile);
//fileUpload.PostedFile.SaveAs(Server.MapPath(filename));
//System.Net.Mail.Attachment atta = newSystem.Net.Mail.Attachment(Server.MapPath(filename));
//mail.Attachments.Add(atta);
#endregion
#region//方法二
//string filepath =Server.MapPath("~/UploadFile/Files");
//string extName =Path.GetExtension(attafile);
//if (!Directory.Exists(filepath))
//{
// Directory.CreateDirectory(filepath);
//}
//filepath = filepath + "\" +DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
//fileUpload.PostedFile.SaveAs(filepath);
//System.Net.Mail.Attachment atta =null;
//if (extName == ".zip" || extName ==".rar")
//{
// atta =new System.Net.Mail.Attachment(filepath,MediaTypeNames.Application.Zip);
//}
//else
//{
// atta =new System.Net.Mail.Attachment(filepath,MediaTypeNames.Application.Octet);
//}
#endregion
#region//方法三
string filepath =Server.MapPath("~/UploadFile/Files");
string extName =Path.GetExtension(attafile);
if (!Directory.Exists(filepath))
{
Directory.CreateDirectory(filepath);
}
filepath = filepath + "\" +DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
fileUpload.PostedFile.SaveAs(filepath);
System.Net.Mail.Attachment atta =null;
if (extName == ".zip" || extName ==".rar")
{
atta = newSystem.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open,FileAccess.Read), attafile,MediaTypeNames.Application.Zip);
}
else
{
atta = newSystem.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open,FileAccess.Read), attafile,MediaTypeNames.Application.Octet);
}
mail.Attachments.Add(atta);
#endregion
}
mail.Priority =MailPriority.Normal;
try
{
smtpClient.Send(mail);
ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip1","alert('发送成功!')", true);
}
catch (Exceptionex)
{
ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip2","alert('" + ex.Message + "!')", true);
}
#endregion
}
}
接受邮件的代码
<%@ WebHandlerLanguage="C#" Class="getEmail" %>
using System;
using System.Web;
using jmail;
using System.Text;
public class getEmail :IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "text/plain";
POP3Class popClient = newPOP3Class();
try
{
popClient.Connect("likeshan168@163.com","likeshannihao168", "pop.163.com", 110);
if (popClient != null)
{
if(popClient.Count > 0)//收件数目
{
StringBuilder sb = newStringBuilder();
Message msg =null;
for (int i = 0, len =popClient.Count; i < len; i++)
{
msg = popClient.Messages[i + 1];
string msgid = popClient.GetMessageUID(i +1);//029DCA8D131AA92586C8FB6CB61B627B0E00000000000001(邮件在服务器中的唯一标识)
int c =popClient.GetLastUnreadMessage();
msg.ISOEncodeHeaders = false;
sb.Append("<p>时间:"+ msg.Date.ToString() +"</p>");
sb.Append("<p>发件人:" + msg.From +"</p>");
string substr =msg.Headers.GetHeader("Subject");//只要有中文就会进行base64的编码,如果是英文的话,就不会进行base64的编码
if (substr.Contains("utf-8"))
{
substr =DecodeStr(substr.Split('?')[3],"utf-8");//=?utf-8?B?5pyJ5LiA5Liq5rWL6K+V?=
}
if (substr.Contains("gbk") ||substr.Contains("GBK") || substr.Contains("GB2312"))
{
substr =DecodeStr(substr.Split('?')[3], "gbk");
}
sb.Append("<p>主题:"+ substr + "</p>");
sb.Append("<p>内容:"+ msg.Body + "</p>");
int attaCount =msg.Attachments.Count;
for (int j = 0; j < attaCount;j++)
{
sb.Append("<p>附件(" + (j +1).ToString() + "):" + msg.Attachments[j].Name +"</p>");
}
}
context.Response.Write(sb.ToString());
}
}
}
catch (Exceptionex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable
{
get
{
return false;
}
}
public static string base64GbkDecode(string data)
{
string decode ="";
byte[] bytes =Convert.FromBase64String(data);//先经过base64解码,在经过gbk2312解码
try
{
decode =Encoding.GetEncoding("gb2312").GetString(bytes);
}
catch (Exceptionex1)
{
return "Error in base64Encode" +ex1.Message;
}
return decode;
}
public static string base64Utf8Decode(string data)
{
string result ="";
try
{
System.Text.UTF8Encoding encoder = newSystem.Text.UTF8Encoding();
System.Text.Decoder utf8Decode =encoder.GetDecoder();//获取解码器
byte[] todecode_byte =Convert.FromBase64String(data);//先经过base64解码,在经过utf-8解码
int charCount =utf8Decode.GetCharCount(todecode_byte, 0,todecode_byte.Length);//多少个字符
char[] decoded_char = newchar[charCount];//字符字符数组
utf8Decode.GetChars(todecode_byte, 0,todecode_byte.Length, decoded_char, 0);//解码到字符数组
result = new String(decoded_char);
}
catch (Exceptione)
{
return "Error in base64Encode" +e.Message;
}
return result;
}
//base64解码
public static string DecodeStr(string allstr, stringcode)
{
//形如=?...?=是结束开始的标志
//=?utf-8?B?5rWL6K+V5o6l5pS25pys6YKu5Lu26L+Z5piv5Li76aKY?=
//=?gbk?B?suLK1L3TytXN4rK/08q8/tXiuPbKx9b3zOU=?=
//返回的字符串
string str = "";
if (code =="gbk")
{
str = base64GbkDecode(allstr);
}
else if (code =="utf-8")
{
str = base64Utf8Decode(allstr);
}
return str;
}
// string subjectStr =popMail.Messages[i].Headers.GetHeader("Subject");
//subjectstr = DecodeStr(subjectallstr.Split('?')[3],“utf-8”);
//再次申明下一定要用popMail.Messages[i].Headers.GetHeader(“Subject”)的形式,
//如果原来页面用的是UTF-8编码popMail.Messages[i].Subject得到的将是直接经jmail解码后的乱码
}
private void SendMailByJmail()
{
/**////建立发邮件类
jmail.MessageClass oJmailMessage = new jmail.MessageClass();
/**//// 字符集
oJmailMessage.Charset = "GB2312";
/**////附件的编码格式
oJmailMessage.Encoding = "BASE64";
oJmailMessage.ContentType = "text/html";
/**////是否将信头编码成iso-8859-1字符集
oJmailMessage.ISOEncodeHeaders = false;
/**//// 优先级
oJmailMessage.Priority = Convert.ToByte(1);
/**////发送人邮件地址
oJmailMessage.From = TxtEmail.Text.Trim();
/**////发送人姓名
oJmailMessage.FromName = TxtName.Text.Trim();
/**//// 邮件主题
oJmailMessage.Subject = txtSubject.Text.Trim();
/**////身份验证的用户名
oJmailMessage.MailServerUserName = TxtSmtpUser.Text.Trim();
/**////用户密码
oJmailMessage.MailServerPassWord = TxtSmtpPwd.Text.Trim();
/**////添加一个收件人,抄送人和密送人的添加和该方法是一样的,只是分别使用AddRecipientCC和RecipientBCC两个属性
///要是需要添加多个收件人,则重复下面的语句即可。添加多个抄送和密送人的方法一样
oJmailMessage.AddRecipient(txtReciver.Text.Trim(),"","");
if("" != upFile.PostedFile.FileName)
{
string attpath = upFile.PostedFile.FileName;
oJmailMessage.AddAttachment(@attpath,true,attpath.Substring(attpath.LastIndexOf(".")+1,3));//添加附件
}
/**////邮件内容
oJmailMessage.Body = txtContent.Text.Trim();
if(oJmailMessage.Send(TxtSmtServer.Text.Trim(),false))
{
Response.Write("发送成功!");
}
else
{
Response.Write("发送失败,请检查邮件服务器的设置!");
}
oJmailMessage = null;
}
/**////
/// 利用Jmail接收邮件
///
private void ReciveByJmail()
{
/**////建立收邮件对象
jmail.POP3Class popMail = new POP3Class();
/**////建立邮件信息接口
jmail.Message mailMessage;
/**////建立附件集接口
jmail.Attachments atts;
/**////建立附件接口
jmail.Attachment att;
try
{
popMail.Connect(TxtPopUser.Text.Trim(),TxtPopPwd.Text.Trim(),TxtPopServer.Text.Trim(),Convert.ToInt32(TxtPopPort.Text.Trim()));
/**////如果收到邮件
if(0 < popMail.Count)
{
/**////根据取到的邮件数量依次取得每封邮件
for(int i=1;i <= popMail.Count;i++)
{
/**////取得一条邮件信息
mailMessage = popMail.Messages[i];
/**////取得该邮件的附件集合
atts = mailMessage.Attachments;
/**////设置邮件的编码方式
mailMessage.Charset = "GB2312";
/**////设置邮件的附件编码方式
mailMessage.Encoding = "Base64";
/**////是否将信头编码成iso-8859-1字符集
mailMessage.ISOEncodeHeaders = false;
**////邮件的优先级
txtpriority.Text = mailMessage.Priority.ToString();
/**////邮件的发送人的信箱地址
txtSendMail.Text = mailMessage.From;
/**////邮件的发送人
txtSender.Text = mailMessage.FromName;
/**////邮件主题
txtSubject.Text = mailMessage.Subject;
/**////邮件内容
txtBody.Text = mailMessage.Body;
/**////邮件大小
txtSize.Text = mailMessage.Size.ToString();
for(int j=0;j62 {
/**////取得附件
att = atts[j];
/**////附件名称
string attname = att.Name;
/**////上传到服务器
att.SaveToFile("e://attFile//"+attname);
}
}
panMailInfo.Visible = true;
att = null;
atts = null;
}
else
{
Response.Write("没有新邮件!");
}
popMail.DeleteMessages();
popMail.Disconnect();
popMail = null;
}
catch
{
Response.Write("Warning!请检查邮件服务器的设置是否正确!");
}
}
发送邮件的代码如下:
using System;
usingSystem.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
usingSystem.Web.UI.WebControls;
using jmail;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
public partial class getemail :System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void sendEmail_Click(object sender, EventArgse)
{
#region
SmtpClient smtpClient = newSmtpClient("smtp.gmail.com", 587);
smtpClient.DeliveryMethod =SmtpDeliveryMethod.Network;
smtpClient.Credentials = newNetworkCredential("likeshan168@gmail.com","likeshannihao168");
MailMessage mail = newMailMessage("likeshan168@gmail.com",emailRec.Text.Trim());
mail.Subject =subject.Text.Trim();
mail.SubjectEncoding =System.Text.Encoding.UTF8;
mail.Body =emailbody.Text.Trim();
mail.BodyEncoding =System.Text.Encoding.UTF8;
smtpClient.EnableSsl =true;
string attafile =fileUpload.PostedFile.FileName;
if(!string.IsNullOrEmpty(attafile))//这里是添加附件的作用
{
#region//方法一
//string filename =Path.GetFileName(attafile);
//fileUpload.PostedFile.SaveAs(Server.MapPath(filename));
//System.Net.Mail.Attachment atta = newSystem.Net.Mail.Attachment(Server.MapPath(filename));
//mail.Attachments.Add(atta);
#endregion
#region//方法二
//string filepath =Server.MapPath("~/UploadFile/Files");
//string extName =Path.GetExtension(attafile);
//if (!Directory.Exists(filepath))
//{
// Directory.CreateDirectory(filepath);
//}
//filepath = filepath + "\" +DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
//fileUpload.PostedFile.SaveAs(filepath);
//System.Net.Mail.Attachment atta =null;
//if (extName == ".zip" || extName ==".rar")
//{
// atta =new System.Net.Mail.Attachment(filepath,MediaTypeNames.Application.Zip);
//}
//else
//{
// atta =new System.Net.Mail.Attachment(filepath,MediaTypeNames.Application.Octet);
//}
#endregion
#region//方法三
string filepath =Server.MapPath("~/UploadFile/Files");
string extName =Path.GetExtension(attafile);
if (!Directory.Exists(filepath))
{
Directory.CreateDirectory(filepath);
}
filepath = filepath + "\" +DateTime.Now.ToString("yyyyMMddhhMMssffff") + extName;
fileUpload.PostedFile.SaveAs(filepath);
System.Net.Mail.Attachment atta =null;
if (extName == ".zip" || extName ==".rar")
{
atta = newSystem.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open,FileAccess.Read), attafile,MediaTypeNames.Application.Zip);
}
else
{
atta = newSystem.Net.Mail.Attachment(new FileStream(filepath, FileMode.Open,FileAccess.Read), attafile,MediaTypeNames.Application.Octet);
}
mail.Attachments.Add(atta);
#endregion
}
mail.Priority =MailPriority.Normal;
try
{
smtpClient.Send(mail);
ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip1","alert('发送成功!')", true);
}
catch (Exceptionex)
{
ClientScript.RegisterClientScriptBlock(Page.GetType(), "tip2","alert('" + ex.Message + "!')", true);
}
#endregion
}
}
接受邮件的代码
<%@ WebHandlerLanguage="C#" Class="getEmail" %>
using System;
using System.Web;
using jmail;
using System.Text;
public class getEmail :IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "text/plain";
POP3Class popClient = newPOP3Class();
try
{
popClient.Connect("likeshan168@163.com","likeshannihao168", "pop.163.com", 110);
if (popClient != null)
{
if(popClient.Count > 0)//收件数目
{
StringBuilder sb = newStringBuilder();
Message msg =null;
for (int i = 0, len =popClient.Count; i < len; i++)
{
msg = popClient.Messages[i + 1];
string msgid = popClient.GetMessageUID(i +1);//029DCA8D131AA92586C8FB6CB61B627B0E00000000000001(邮件在服务器中的唯一标识)
int c =popClient.GetLastUnreadMessage();
msg.ISOEncodeHeaders = false;
sb.Append("<p>时间:"+ msg.Date.ToString() +"</p>");
sb.Append("<p>发件人:" + msg.From +"</p>");
string substr =msg.Headers.GetHeader("Subject");//只要有中文就会进行base64的编码,如果是英文的话,就不会进行base64的编码
if (substr.Contains("utf-8"))
{
substr =DecodeStr(substr.Split('?')[3],"utf-8");//=?utf-8?B?5pyJ5LiA5Liq5rWL6K+V?=
}
if (substr.Contains("gbk") ||substr.Contains("GBK") || substr.Contains("GB2312"))
{
substr =DecodeStr(substr.Split('?')[3], "gbk");
}
sb.Append("<p>主题:"+ substr + "</p>");
sb.Append("<p>内容:"+ msg.Body + "</p>");
int attaCount =msg.Attachments.Count;
for (int j = 0; j < attaCount;j++)
{
sb.Append("<p>附件(" + (j +1).ToString() + "):" + msg.Attachments[j].Name +"</p>");
}
}
context.Response.Write(sb.ToString());
}
}
}
catch (Exceptionex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable
{
get
{
return false;
}
}
public static string base64GbkDecode(string data)
{
string decode ="";
byte[] bytes =Convert.FromBase64String(data);//先经过base64解码,在经过gbk2312解码
try
{
decode =Encoding.GetEncoding("gb2312").GetString(bytes);
}
catch (Exceptionex1)
{
return "Error in base64Encode" +ex1.Message;
}
return decode;
}
public static string base64Utf8Decode(string data)
{
string result ="";
try
{
System.Text.UTF8Encoding encoder = newSystem.Text.UTF8Encoding();
System.Text.Decoder utf8Decode =encoder.GetDecoder();//获取解码器
byte[] todecode_byte =Convert.FromBase64String(data);//先经过base64解码,在经过utf-8解码
int charCount =utf8Decode.GetCharCount(todecode_byte, 0,todecode_byte.Length);//多少个字符
char[] decoded_char = newchar[charCount];//字符字符数组
utf8Decode.GetChars(todecode_byte, 0,todecode_byte.Length, decoded_char, 0);//解码到字符数组
result = new String(decoded_char);
}
catch (Exceptione)
{
return "Error in base64Encode" +e.Message;
}
return result;
}
//base64解码
public static string DecodeStr(string allstr, stringcode)
{
//形如=?...?=是结束开始的标志
//=?utf-8?B?5rWL6K+V5o6l5pS25pys6YKu5Lu26L+Z5piv5Li76aKY?=
//=?gbk?B?suLK1L3TytXN4rK/08q8/tXiuPbKx9b3zOU=?=
//返回的字符串
string str = "";
if (code =="gbk")
{
str = base64GbkDecode(allstr);
}
else if (code =="utf-8")
{
str = base64Utf8Decode(allstr);
}
return str;
}
// string subjectStr =popMail.Messages[i].Headers.GetHeader("Subject");
//subjectstr = DecodeStr(subjectallstr.Split('?')[3],“utf-8”);
//再次申明下一定要用popMail.Messages[i].Headers.GetHeader(“Subject”)的形式,
//如果原来页面用的是UTF-8编码popMail.Messages[i].Subject得到的将是直接经jmail解码后的乱码
}
相关文章推荐
- ASP.NET中常用功能代码总结(7)——利用Jmail发送和接收邮件
- ASP.NET中常用功能代码总结(7)——利用Jmail发送和接收邮件
- asp.net jmail发送邮件代码
- asp.net 利用JMAIL发送邮件
- 利用ASP.NET自带System.Net.Mail发邮件和Jmail接收邮件
- asp.net 利用jmail完成邮件的发送功能
- asp.net利用jmail发送邮件
- ASP.NET C# 邮件发送一:利用Jmail组件发送邮件
- ASP.Net环境下使用Jmail组件发送邮件
- ASP.Net使用jmail和System.Net.Mail发送邮件
- asp.net利用SmtpClient发送邮件
- 利用asp.net自带邮件组件 发送邮件,支持126,163,gmail,qq等邮箱
- asp.net mvc发送邮件附带附件代码~~~~
- asp.net下利用cdonts.dll组件发送邮件的例子
- ASP.Net环境下使用Jmail组件发送邮件
- asp.net 发送邮件代码
- asp.net 2.0发送和接收邮件总结
- 利用asp.net自带邮件组件 发送邮件,支持126,163,gmail,qq等邮箱
- asp.net三种发送邮件代码(stmp,无组件邮件发送)
- asp.net 发送邮件代码