** 基于 ** ** .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() > 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()>