asp.net利用Jmail发送邮件和接收全部代码

来源:互联网 发布:windows xp 怎么升级 编辑:程序博客网 时间:2024/05/29 07:05
利用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解码后的乱码
}

原创粉丝点击