基于.NET的邮件解决方案

** 基于 ** ** .NET ** ** 的邮件解决方案 ** ** **

第一次开始使用 .net 的 System.Web.Mail 消息组件,觉得很好用,而且简单。但后来发现 .net 自带的 SmtpMail 不支持 SMTP 认证,而且许多许多 SMTP 服务器不只需要登陆验证,还对 MAIL From 作了验证 ( 比如 263) ,如果和登陆用的用户名不符也不能发信。再有就是 pop3 邮件的信息解析问题,比如说解析出中文。 总结起来邮件问题也就 2 个问题:

一是 smtp 的身份验证,二是 pop3 邮件的信息解析问题。

以上两个问题,也正是 ms 没有提供部分的核心问题。我也问过 ms 的专家,有关 mail 解决方案的问题,他们也没给我一个什么样答复。网上也有不少高手倾情奉献自己的源码,可上述的两个问题始终都没有(或我没在网上找到)。看有些 coder 们现在正在找这些,所以,还是把我的解决方案提供给大家,只是给大家一个参考。

用 Jmail 组件:可以解决上述两个问题, Jmail 组件 (Ver 4.3) 发送时提供身份验证,而且接收的信息解析问题也能得到很好解决!

以下是两个WEB Service 方法

'发送Email

 1<webmethod()> Public  Function  Jmail_Send(  ByVal  fromEmailAddress  As  String  , _ 
 2
 3ByVal  toEmailAddress  As  String  , _ 
 4
 5ByVal  ccEmailAddress  As  String  , _ 
 6
 7ByVal  bccEmailAddress  As  String  , _ 
 8
 9ByVal  subject  As  String  , _ 
10
11ByVal  body  As  String  ,  ByVal  MailServer  As  String  )  As  Boolean 
12
13Dim  email  As  New  jmail.Message() 
14
15email.Logging =  True 
16
17email.Silent =  True 
18
19'  email.MailServerUserName = ""  'smtp服务器用户名 
20
21'  email.MailServerPassWord = ""  'smtp服务器密码 
22
23email.From = fromEmailAddress 
24
25email.Subject = subject 
26
27email.Body = body 
28
29email.AddRecipient(toEmailAddress) 
30
31If  email.Send(MailServer)  Then 
32
33Return  True 
34
35Else 
36
37Return  False 
38
39End  If 
40
41End  Function 
42
43'接收Email 
44
45<webmethod()> Public  Function  Jmail_Receivemail(  ByVal  UserName  As  String  , _ 
46
47ByVal  Password  As  String  ,  ByVal  MailServer  As  String  )  As  Boolean 
48
49Dim  email  As  New  jmail.POP3() 
50
51Dim  MSG  As  New  jmail.Message() 
52
53email.Connect(UserName, Password, MailServer, 110) 
54
55If  email.Count() &gt; 0  Then 
56
57MSG = email.Messages.Item(1) 
58
59Debug.Write(MSG.FromName) 
60
61Debug.Write(MSG.Subject) 
62
63Debug.Write(MSG.Date) 
64
65Debug.Write(MSG.Body) 
66
67Return  True 
68
69End  If 
70
71email.Disconnect() 
72
73End  Function 
74
75以上代码是利用  Jmail  发送、接收邮件代码的一个原形,大家可以在此基础上扩充。  Jmail  提供了强大的邮件发送及处理功能,你不用自己费太长的时间,就可以完成所有需要的功能,不是很好么?当然,你也可以自己写组件,接收邮件可以用  Imports  System.Convert来进行  Base 64的处理,进行解码!但愿大家都能找到适合自己的解决方案! 
76
77Author:李洪根 lihonggen0 
78
79个人专栏:  http://www.csdn.net/develop/author/netauthor/lihonggen0/ 
80
81欢迎指教  !</webmethod()></webmethod()>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus