您的位置:首页 > 大数据 > 人工智能

利用Jmail发送接收邮件的方法

2010-04-08 11:35 218 查看
首先得下载JMAIL组件安装后 引用该JMAIL.DLL文件
相关代码如下:
附件接收还未完善
using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Net;

using System.Net.Mail;

using System.Text;

using System.Collections.Generic;

using System.Text.RegularExpressions;

using jmail;

using System.IO;

using TX.DataAccess;

/// <summary>

/// NetMail 的摘要说明

/// </summary>

public class Mail

{

public Mail()

{
}

private string _mailto;

private string _mailfrom;

private string _mailsubject;

private string _mailbody;

private string _attech;

private string _password;

//收件人地址

public string Mailto

{

set { _mailto = value; }

get { return _mailto; }

}

//主题

public string MailSubject

{

set { _mailsubject = value; }

get { return _mailsubject; }

}

//内容

public string MailBody

{

set { _mailbody = value; }

get { return _mailbody; }

}

//附件

public string Attech

{

set { _attech = value; }

get { return _attech; }

}

//发件人

public string MailFrom

{

set { _mailfrom = value; }

get { return _mailfrom; }

}

public string PassWord

{

set { _password = value; }

get { return _password; }

}

public bool SendByJmail()//创建Mail,填入发送人,主题,內容

{

try

{

jmail.Message Jmail = new Message();

DateTime t = DateTime.Now;

String subject =_mailsubject ;

String body =_mailbody ;

string FromEmail =_mailfrom; //你的email

String ToEmail =_mailto; //对方的email

String AddAttachment =_attech;//this.FileUploadSubject.PostedFile.FileName;

//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false

Jmail.Silent = true;

//Jmail创建的日志,前提loging属性设置为true

Jmail.Logging = true;

//字符集,缺省为"US-ASCII"

Jmail.Charset = "GB2312";

//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。

// Jmail.ContentType = "text/html";

ToEmail = ToEmail.Replace("/n", "").Replace(" ", "");

string[] str = ToEmail.Split(',');
Jmail.ISOEncodeHeaders = false;//解决中文乱码的问题

for (int i = 0; i < str.Length; i++)

{

//添加收件人

Jmail.AddRecipient(str[i], "", "");
Jmail.From = FromEmail;

//发件人邮件用户名

Jmail.MailServerUserName = _mailfrom; //"gdhdavid2@163.com";

//发件人邮件密码

Jmail.MailServerPassWord = _password;//"123456";//FromEmail邮箱的登陆密码

//设置邮件标题

Jmail.Subject = subject;

//AddAttachment

if (_attech != "")

{

// 邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment( "c://test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。

string[] toArray = _attech.Split(',');

foreach (string j in toArray)

{

if (j.ToString()!="")

{

Jmail.AddAttachment(j.ToString(), true, null);

}

}

}
//.AddAttachment("E://2.txt", true, null);

//邮件内容

Jmail.Body = body + t.ToString();

//加密文件

//Jmail.PGPEncrypt = true;

//Jmail发送的方法

Jmail.Send("smtp.163.com", false);

Jmail.ClearAttachments();

Jmail.ClearRecipients();

}

Jmail.Close();

return true;

}

catch (Exception ex)

{

return false;

}

}



public string ReciveByJmail()

{

/**/

///建立收邮件对象

jmail.POP3Class popMail = new jmail.POP3Class();
/**/

///建立邮件信息接口

jmail.Message mailMessage;
/**/

///建立附件集接口

jmail.Attachments atts;
/**/

///建立附件接口

jmail.Attachment att;
try

{

popMail.Connect("gdhdavid2@163.com", "123456", "pop3.163.com", 110);
/**/

///如果收到邮件

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;
/**/

///邮件的优先级

string priority= mailMessage.Priority.ToString();
/**/

///邮件的发送人的信箱地址

string SendMail = mailMessage.From;
/**/

///邮件的发送人

string Sender= mailMessage.FromName;
/**/

///邮件主题

string Subject= mailMessage.Subject;
/**/

///邮件内容

string Body= mailMessage.Body;
DateTime datetime = mailMessage.Date;

/**/

///邮件大小

string Size= mailMessage.Size.ToString();

DABaseAccess DB = new DABaseAccess();

StringBuilder StrApp = new StringBuilder();

StrApp.Append("insert Mail(SendMail,Sender,Subject,Body,datetime,Size,priority)values(");

StrApp.Append("'" + SendMail + "',");

StrApp.Append("'" + Sender + "',");

StrApp.Append("'" + Subject + "',");

StrApp.Append("'" + Body + "',");

StrApp.Append("'" + datetime + "',");

StrApp.Append("'" + Size + "',");

StrApp.Append("'" + priority + "'");

StrApp.Append(")");

DB.GetNonQuery(StrApp.ToString());

/*

for (int j = 0; j < atts.Count; j++)

{

/

///取得附件

att = atts[j];


///附件名称

string attname = att.Name;


///上传到服务器

att.SaveToFile("e://attFile//" + attname); //检查是否已经存在该文件




}

*/

for (int j = 0; j < atts.Count; j++)

{

///取得附件

//att = atts[j];

///附件名称

//string attname = att.Name;

///上传到服务器

// att.SaveToFile("e://attFile//" + attname); //检查是否已经存在该文件
att = atts[j];

string attname = att.Name;

//Random TempNameInt = new Random();

//string NewMailDirName = TempNameInt.Next(100000000).ToString();

//生成随机文件后缀名

string strSaveDir = "E://AttachFiles//";

//取得文件名(抱括路径)里最后一个"."的索引

int intExt = attname.LastIndexOf(".");

//取得文件扩展名

string strExt = attname.Substring(intExt);

//取得文件名(不包括路径)

Random objRand = new Random();

System.DateTime date = DateTime.Now;

//生成随机文件名

string str = attname.Substring(1, attname.LastIndexOf(".") - 1);

string saveName = System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + System.DateTime.Now.Millisecond.ToString() + Convert.ToString(objRand.Next(99) * 97 + 100);

string strNewName = str + "(" + saveName + ")" + strExt;//取新名字,防止重复
//Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".") + "//AttachFiles//" + strNewName);

Directory.CreateDirectory("E://AttachFiles//" + strNewName);

string mailPath = strSaveDir + strNewName;
try

{

att.SaveToFile("E://AttachFiles//" + mailPath + "//" + att.Name);

}

catch (Exception ex)

{

return ex.ToString();

}

//获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可

//int mailID = this.GetMailID();

/**/////将附件信息存入数据库

//this.AttExtSend(mailID, attname, att.Size, mailPath, Msg.From);

}


}

//panMailInfo.Visible = true;

att = null;

atts = null;

return "下载成功";

}

else

{

//Response.Write("没有新邮件!");

return "没有新邮件";



}
popMail.DeleteMessages();

popMail.Disconnect();

popMail = null;

}

catch

{

//Response.Write("Warning!请检查邮件服务器的设置是否正确!");

return "Warning!请检查邮件服务器的设置是否正确!";

}

}
}



铁观音-厂家直销
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: