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!请检查邮件服务器的设置是否正确!");
}
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 }
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
{
}
接受邮件的代码
<%@ WebHandlerLanguage="C#" Class="getEmail" %>
using System;
using System.Web;
using jmail;
using System.Text;
public class getEmail :IHttpHandler
{
}
- asp.net利用Jmail发送邮件和接收全部代码
- ASP.NET中常用功能代码总结(7)——利用Jmail发送和接收邮件
- ASP.NET中常用功能代码总结(7)——利用Jmail发送和接收邮件
- 利用Jmail发送和接收邮件
- 利用Jmail发送和接收邮件
- 利用Jmail发送和接收邮件
- 利用Jmail发送和接收邮件
- 利用ASP.NET自带System.Net.Mail发邮件和Jmail接收邮件
- Jmail发送和接收邮件
- Jmail发送和接收邮件
- Jmail发送和接收邮件
- 利用Jmail接收邮件,发送邮件
- asp.net+jmail发送邮件
- asp.net jmail 发送邮件
- 利用Jmail发送接收邮件的方法
- ASP.Net使用jmail和System.Net.Mail发送邮件
- ASP利用Jmail发送邮件的问题
- ASP.NET C# 邮件发送一:利用Jmail组件发送邮件
- php导出导入excel乱码 及列数的计算
- Place images as one row on latex
- 网页制作html的基本解释与操作(二)
- 关于Element与Document的getElementsByTagName方法
- java代码优化简介
- asp.net利用Jmail发送邮件和接收全部代码
- RCP 首选项笔记
- libmysqlclient.so.18错误
- 不能在析构函数里面抛出异常
- Java中正则表达式使用方法详解
- svn 配置
- 面试总结
- LayoutInflater的使用
- String.matches()的用法