首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

200分C#接收邮件的代码

2012-01-02 
200分求一个C#接收邮件的代码要求:至少能pop3正常收取163,GMAIL的中文邮件.-----------------------------

200分求一个C#接收邮件的代码
要求:至少能pop3正常收取163,GMAIL的中文邮件.
-----------------------------------------------
告诉我Google上一大把之类的话,坚决不给这种人分.试过代码的说话.

[解决办法]
http://www.cnblogs.com/jerrie/archive/2006/06/20/430590.html
[解决办法]
下载Aspose.Network组件,csdn下载频道就有

代码

C# code
//收            Aspose.Network.Pop3.Pop3Client pc = new Aspose.Network.Pop3.Pop3Client();            pc.Host = "pop.163.com";            pc.Username = "xxx@163.com";            pc.Password = "xxx";            pc.Connect();            pc.Login();            pc.SaveMessage(1,@"c:\1.eml");
[解决办法]
应该需要别的Library
Framework默认只能发邮件,不能接收


[解决办法]
public void ReceiveMails(string Username) 
...{ 
jmail.Message Msg=new jmail.Message(); 
jmail.POP3 jpop = new jmail.POP3(); 
jmail.Attachments atts; 
jmail.Attachment att; 

//username为用户名,该方法通过用户名获取该用户的pop设置,即用户的POP用户名,密码,POP服务器地址以及端口号这四个参数,这四个参数是连接POP服务器的必用参数. 
SqlDataReader dataReader = this.ExtGetSetting(Username); 
if(dataReader.Read()) 
...{ 
if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="") 
...{ 
//连接POP服务器 
jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString())); 
//如果服务器上有邮件 
if(jpop.Count>=1) 
...{ 
for(int i=1;i <=jpop.Count;i++) 
...{ 
Msg = jpop.Messages[i]; 
atts=Msg.Attachments; 

//取数据库中邮件信息中的最大发送时间,即最近接收到的一封邮件的时间 
Database dbase=new Database(); 
DataTable data=dbase.GetDataTable("select max(MailSendDate) as MailSenderDate from TabMailList where MailTypeFlag='1'
if(Msg.Date>Convert.ToDateTime(data.Rows[0][0].ToString())) 
...{ 
//将这封新邮件的信息保存到数据库 
this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i)); 

//获取附件上传到服务器并且将信息存入数据库 
if(atts.Count>=1) 
...{ 
for(int k=0;k <atts.Count;k++) 
...{ 
att=atts[k];//获得附件 
string attname=att.Name; 
try 
...{ 
Random TempNameInt = new Random(); 
string NewMailDirName = TempNameInt.Next(100000000).ToString(); 
Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".")+"AttachFiles"+Username+""+NewMailDirName); 
string mailPath="AttachFiles"+Username+""+NewMailDirName+""+attname; 
att.SaveToFile(System.Web.HttpContext.Current.Server.MapPath(".")+mailPath); 


//获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可 
int mailID=this.GetMailID(); 
//将附件信息存入数据库 
this.AttExtSend(mailID,attname,att.Size,mailPath,Msg.From); 

catch(Exception ex) 
...{ 
throw new Exception(ex.Message); 






//删除服务器上的邮件 
jpop.DeleteMessages(); 
//断开连接 
jpop.Disconnect(); 


 参考下,做简单修改就可以搞定啦,之前用过地!
[解决办法]
可以参看一下OpenPOP.NET收信很不错而且是开源的。
提供一下网址:

http://unruledboy.cnblogs.com/archive/2004/05/26/11552.html

http://www.host01.com/article/Net/00020003/0562810415659465.htm

http://sourceforge.net/projects/hpop/
[解决办法]
我以前做过用JMAIL4.4PRO收发邮件的,但是都和转发邮箱有关系,转发邮箱不稳定,或不允许就没用了
[解决办法]
我用Jmail控件做过一个完整的程序!我写在我博客里面了,希望对你有帮助!有什么问题可以随时叫我!
http://blog.csdn.net/chuxue1342/archive/2007/10/15/1825999.aspx
[解决办法]

VB.NET code
Imports SystemImports System.NetImports System.Net.SocketsImports System.IOPublic Class Pop3Client    Protected Server As TcpClient    Protected NetStrm As NetworkStream    Protected WrStrm As StreamWriter    Protected RdStrm As StreamReader    Protected Data As String    Protected szData As Byte()    ''' <summary>    ''' Connect to pop3 server    ''' </summary>    ''' <param name="PopServer">Pop3 Server</param>    ''' <param name="PopPort">Pop3 Server Port</param>    ''' <param name="Username">User Name</param>    ''' <param name="Password">Password</param>    ''' <returns>    '''     0   -   success    '''     1   -   user invalid    '''     2   -   user or pass invalid    '''     -1  -   other error(server not exsit)    '''</returns>    ''' <remarks></remarks>    Public Function ConnectPopServer(ByVal PopServer As String, ByVal PopPort As Integer, _                 ByVal Username As String, ByVal Password As String) As Integer        Dim sResult As String        Try            '用110端口新建POP3服务器连接            Server = New TcpClient(PopServer, PopPort)            '初始化            NetStrm = Server.GetStream()            WrStrm = New StreamWriter(NetStrm)            RdStrm = New StreamReader(NetStrm)            sResult = RdStrm.ReadLine()            '登录服务器过程            Data = "USER " + Username + vbCrLf            szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray())            NetStrm.Write(szData, 0, szData.Length)            sResult = RdStrm.ReadLine()            If sResult.Substring(0, 3) = "-ER" Then                Return 1            End If            Data = "PASS " + Password + vbCrLf            szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray())            NetStrm.Write(szData, 0, szData.Length)            sResult = RdStrm.ReadLine()            If sResult.Substring(0, 3) = "-ER" Then                Return 2            End If            Return 0        Catch ex As Exception            Return -1        End Try    End Function    ''' <summary>    ''' Disconnect from pop3 server    ''' </summary>    ''' <returns>    '''     0   -   success    '''     1   -   quit failed    '''     -1  -   other error    '''</returns>    ''' <remarks></remarks>    Public Function DisconnectPopServer() As Integer        Dim sResult As String        Try            '向服务器发送QUIT命令从而结束和POP3服务器的会话            Data = "QUIT" + vbCrLf            szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray())            NetStrm.Write(szData, 0, szData.Length)            sResult = RdStrm.ReadLine()            If sResult.Substring(0, 3) = "-ER" Then                Return 1            End If            '断开连接            NetStrm.Close()            RdStrm.Close()            Server.Close()            Return 0        Catch ex As Exception            Return -1        End Try    End FunctionEnd Class 


[解决办法]
http://blog.csdn.net/sq_zhuyi/archive/2008/11/11/3274635.aspx
[解决办法]
学习一下!
[解决办法]
学习
[解决办法]
Mark
[解决办法]

探讨
下载Aspose.Network组件,csdn下载频道就有

代码


C# code//收
Aspose.Network.Pop3.Pop3Client pc = new Aspose.Network.Pop3.Pop3Client();
pc.Host = "pop.163.com";
pc.Username = "xxx@163.com";
pc.Password = "xxx";
pc.Connect();
pc.Login();
pc.SaveMessage(1,@"c:\1.eml");

[解决办法]
MARK
[解决办法]
发个帖子,站个位置
[解决办法]
发个帖子,站个位置
[解决办法]
bang ding .
[解决办法]
http://www.zu14.cn/?s=pop3
[解决办法]

MailMessage mymsg=new MailMessage();//提供构造电子邮件的方法和属性
mymsg.From=this.TextBox2.Text;//获取或设置发信人的地址
mymsg.To=this.TextBox1.Text;//获取或设置以分号分割收信人电子邮箱地址
mymsg.Priority=(MailPriority)this.DropDownList1.SelectedIndex;//获取或设置优先级别
mymsg.BodyFormat=(MailFormat)this.DropDownList2.SelectedIndex;//提供邮件格式
mymsg.Body=this.TextBox4.Text;//获取或设置正文
HttpPostedFile hpffile=this.File1.PostedFile;//提供访问客户端已经上载的各个文件
if(hpffile.FileName!="")
{
//有附件,则上传到Temp目录中
//获得文件名(不含路径)
char[] de={'\\'};
string[] afilename=hpffile.FileName.Split(de);
string strfilename=afilename[afilename.Length-1];
string strpath=Server.MapPath(".")+"\\Temp\\"+strfilename;
hpffile.SaveAs(strpath);
//添加附件
mymsg.Attachments.Add(new MailAttachment(strpath));
}
try
{
System.Web.Mail.SmtpMail.SmtpServer="";//本地的服务器
//System.Web.Mail.SmtpMail.SmtpServer="smtp.163.com";
//mymsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate","1");//端口号
//mymsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername","liujintaohfbb");
//mymsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","ljtah");
//发送
SmtpMail.Send(mymsg);
Response.Write("<script>alert('发送成功!')</script>");
this.TextBox1.Text="";
this.TextBox2.Text="";
this.TextBox3.Text="";
this.TextBox4.Text="";
this.DropDownList1.SelectedIndex=1;
this.DropDownList2.SelectedIndex=0;
}
catch(Exception ee)
{
this.Label1.Text="发送失败"+ee.ToString();
}

[解决办法]
mark
[解决办法]
收藏!以后项目中可能要用到!
------解决方案--------------------


学习
[解决办法]
mark
[解决办法]
学习~
[解决办法]
看看,路过。
[解决办法]
lihai 记下了
[解决办法]
学习
[解决办法]
我有个类库,代码太多了,贴不完,要的话邮件给我.119654848##qq.com ##替换成@这个知道吧,呵呵.
[解决办法]
jmail好像不能用吧

[解决办法]
关注中
[解决办法]
学习啊啊啊啊啊啊啊啊啊啊啊
[解决办法]
我要学习啊啊啊啊啊
[解决办法]
给个邮箱,把源代码发给你。这是OA上关于邮箱收发的模块。我QQ:617586962
[解决办法]
帮顶一下
[解决办法]
这个不错啊。顶。。
[解决办法]
我想要一份哦。也给我一份吧。我的邮箱是qd98zhq@163.com
[解决办法]
关注
[解决办法]
<br>11<br>'
[解决办法]
随便看了一下 发现99.9%的人 对pop协议完全没概念
[解决办法]
UP
[解决办法]
MARK
[解决办法]
我以前也发过这样的贴子,你去我那里看下吧,希望对你有用
地址:http://topic.csdn.net/u/20080721/18/7865b34f-efc1-489d-b719-121713fe22dc.html
[解决办法]
<%
EmailSender="sales@memay.com" 
'发件人名称 
SYS_WEBNAME="sales" 
'邮件发送服务器地址 
EMAILServer="mail.memay.com" 
'邮件发送服务器用户名 
EMAILServerUser="sales@memay.com" 
'邮件发送服务器用户密码 
EMAILServerPass="passwordsales" 
titlemessage="www.memay.com注册信息"

contentmessage="您好,您在www.memay.com已经注册成功,您的登陆用户名是"&user&"密码是:"&randKey


Call Jmail(user,titlemessage,contentmessage) 


'************************************************************************************
'函数名:Jmail()



'************************************************************************************

Function Jmail(Email,E_Subject,Information)
Dim C_Email,C_HostName,C_Smtp,C_M_User,C_M_Pass 
C_Email=EmailSender '发送者的邮箱
C_HostName=SYS_WEBNAME '发送者的名字
C_Smtp=EMAILServer 'Smtp服务器地址
C_M_User=EMAILServerUser '如果Smtp服务器需要验证身份,请输入用户名
C_M_Pass=EMAILServerPass '请输入密码 

Dim Sender
Err.Clear
On Error Resume Next
If Email="" Or Information="" Or E_Subject="" Then
Jmail=False
Exit Function
End If
set Sender=Server.CreateObject("Jmail.message")
Sender.Charset="gb2312" 


Sender.ISOEncodeHeaders=false 
Sender.Logging=true 
Sender.From=C_Email
Sender.Fromname=C_HostName
sender.addrecipient Email
sender.subject=E_Subject
Sender.AppendHtml "您好,您在www.memay.com已经注册成功,您的用户名是"&user&"密码是:"&randKey
sender.maildomain=C_Smtp 
sender.mailserverusername=C_M_User
sender.mailserverpassword=C_M_Pass
sender.Priority = 3
sender.send(C_Smtp)


If Err.Number<>0 Then
Jmail=False 
Response.write "邮件发送失败!详细错误原因:"&Err.Description 
Else
Jmail=True
%>

[解决办法]
Mark
[解决办法]
markmark
[解决办法]
mark
[解决办法]
可以参看一下OpenPOP.NET收信很不错而且是开源的。 
提供一下网址: 

http://unruledboy.cnblogs.com/archive/2004/05/26/11552.html 

http://www.host01.com/article/Net/00020003/0562810415659465.htm 

http://sourceforge.net/projects/hpop/
[解决办法]
.
[解决办法]
我有完整版,但不支持所有解码,纯文本系列的可以完全显示,用我自制的发送邮件系统,则可以随心所欲.需要吗?
[解决办法]

探讨
 [b][/b]

[解决办法]
using System; 
using System.Text; 
using System.IO; 
using Email.POP3; 
using System.Data; 

namespace KingOper 

public class POP 

public POP() 
{

}
public static DataTable main(string SerName,string UserName,string Password) 

POP3 objPOP3 = new POP3(SerName, UserName, Password); 
Console.WriteLine(objPOP3.Connect() ? "Connected" : "Can't connect"); 

Console.WriteLine(objPOP3.Login() ? "Logged in" : "Can't login"); 
objPOP3.QueryServer(); 
int EmailCount=objPOP3.TotalMailCount; 
DataTable dt=new DataTable("邮件"); 
dt.Columns.Add("FROM");//发件人 
dt.Columns.Add("TO");//收件人 
dt.Columns.Add("CC");//回复 
dt.Columns.Add("SUBJECT");//主题 
dt.Columns.Add("DATE");//日期 
dt.Columns.Add("CONTENT-TYPE"); 
dt.Columns.Add("CHARSET"); 
dt.Columns.Add("MESSAGE-ID");//邮件id 
dt.Columns.Add("MESSAGE SIZE");//大小 
dt.Columns.Add("EMAILOBJ");//内容 
dt.Columns.Add("Attachments");//附件 
dt.Columns.Add("FILEDIR");//保存目录 
for (int i = 1; i <= EmailCount; i++) 


EmailMessage objEmail = objPOP3.GetMessage(i,false); // use true to get headers only 
DataRow dr = dt.NewRow(); 
dr[0]=objEmail.From; 
dr[1]=objEmail.To; 
dr[2]=objEmail.Cc; 
dr[3]=objEmail.Subject; 
dr[4]=objEmail.Date; 
dr[5]=objEmail.ContentType; 
dr[6]=objEmail.Charset; 
dr[7]=objEmail.GetCustomHeader("Message-ID"); 
dr[8]=objEmail.Size; 
dr[9]=QPDecode(objEmail.Body,System.Text.Encoding.Default); 

string fj=""; 
if (objEmail.IsAnyAttachments) 

int sum=0; 
for(int a = 0; a < objEmail.Attachments.Count; a++) 

Attachment objFile = (Attachment)objEmail.Attachments[a]; 
if (!objFile.IsFileAttachment)

if (objFile.TextBody != null) 

sum++; 
fj+=sum.ToString()+":"+objFile.FileName; 
if(!System.IO.Directory.Exists(@"d:\pop3\fj")) 

System.IO.Directory.CreateDirectory(@"d:\pop3\fj"); 

StreamWriter swfj = new StreamWriter(@"d:\pop3\"+sum.ToString()+":"+objFile.FileName); 
swfj.Write(objFile.Data); 
swfj.Close(); 




dr[10]=fj; 
dr[11]=@"d:\pop3\m_" + i.ToString() + ".eml"; 
dt.Rows.Add(dr);//构建DataTable的数据 
if(!System.IO.Directory.Exists(@"d:\pop3")) 

System.IO.Directory.CreateDirectory(@"d:\pop3"); 

StreamWriter sw = new StreamWriter(@"d:\pop3\m_" + i.ToString() + ".eml"); 
sw.Write(objEmail.ToString()); 
sw.Close(); 

objPOP3.Close(); 
return dt; 




public static string QPDecode(string data,Encoding encoding)
{
char ch;
string ret="";

byte[] bytes=new byte[data.Length];
int bIdex=0;

try
{
for(int rIndex=0; rIndex<data.Length;rIndex++)
{
ch=data[rIndex];
if(ch=='=')
{
rIndex++;
if( rIndex<data.Length && ( Char.IsDigit(data[rIndex])||Char.IsLetter(data[rIndex])))
{
bytes[bIdex++]=Byte.Parse(data.Substring(rIndex++,2),System.Globalization.NumberStyles.HexNumber);
continue;
}
if( rIndex<data.Length && data[rIndex]=='\r' && (rIndex+1)<data.Length && data[rIndex+1]=='\n')
{
rIndex++;
continue;
}
}
if(ch=='\r'||ch=='\n')
continue;
bytes[bIdex++]=(byte)ch;
}
ret=encoding.GetString(bytes,0,bIdex);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
return ret;
}



http://www.codes63.net/attachment.aspx?attachmentid=624

热点排行