程序还没写,但要先统计一些东西要求统计发送mail的时候都会出现那些Exception,请大家帮忙哦今天就要完成!

解决方案 »

  1.   

    up
    我说的是jmail
    我就只试过当服务器上没装jmail时抛出错误外.其它的都没试过..
      

  2.   

    我打算用 system.web.mail
    ...
      

  3.   

    Try
                Try
                   Dim Message As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage()
                   Message.To = args(0)
                   Message.From = args(1)
                   Message.Subject = args(2)
                   Message.Body = args(3)
                   Try
                      SmtpMail.SmtpServer = "your mail server name goes here"
                      SmtpMail.Send(Message)
                   Catch ehttp As System.Web.HttpException
                      Console.WriteLine("0", ehttp.Message)
                      Console.WriteLine("Here is the full error message")
                      Console.Write("0", ehttp.ToString())
                   End Try
                Catch e As IndexOutOfRangeException
                   ' Display usage instructions if error in arguments.
                   Dim use As usage = New usage()
                   use.DisplayUsage()
                End Try
             Catch e As System.Exception
                ' Display text of unknown error.
                Console.WriteLine("Unknown Exception occurred 0", e.Message)
                Console.WriteLine("Here is the Full Error Message")
                Console.WriteLine("0", e.ToString())
             End Try
    msdn上的例子。应该有些参考
      

  4.   

    给你一个vb.net的对邮件地址进行多重验证的代码,估计只要能验证通过,基本不会出现exception
    只需要调用第一个公共函数就可以了!
        Public Function CheckEmail(ByVal sEmail As String) As commstru        Dim returns As New commstru        Dim oStream As NetworkStream
            Dim sFrom As String '发件人
            Dim sTo As String '收件人
            Dim sResponse As String '邮件服务器的应答
            Dim Remote_Addr As String '发件人的域名
            Dim mserver As String '邮件服务器
            Dim sText As String()        sTo = "<" + sEmail + ">"
            ' 从邮件地址分离出帐户名和域名
            sText = sEmail.Split(CType("@", Char))
            ' 查找该域的邮件服务器
            mserver = GetMailServer(sText(1))
            'mserver为空值表明查找邮件服务器失败
            If mserver = "" Then
                returns.flag = 4
                returns.returnmsg = "不能找到邮件服务器"
                Return returns
            End If
            '发件人地址的域名必须合法
            Remote_Addr = "sina.com.cn"
            sFrom = "<myIP@" & Remote_Addr + ">"
            '尽可能延迟创建对象的时间
            Dim oConnection As New TcpClient
            Try
                '超时时间
                oConnection.SendTimeout = 3000
                '连接SMTP端口
                oConnection.Connect(mserver, 25)
                '收集邮件服务器的应答信息
                oStream = oConnection.GetStream()
                sResponse = GetData(oStream)
                sResponse = SendData(oStream, "HELO " & Remote_Addr & vbCrLf)
                sResponse = SendData(oStream, "MAIL FROM: " & sFrom & vbCrLf)
                '如果对MAIL FROM指令有肯定的应答,
                '至少表明邮件地址的域名正确
                If ValidResponse(sResponse) Then
                    sResponse = SendData(oStream, "RCPT TO: " & sTo & vbCrLf)
                    '如果对RCPT TO指令有肯定的应答
                    '表明邮件服务器已认可该地址
                    If ValidResponse(sResponse) Then
                        returns.flag = 1
                        returns.returnmsg = "邮件地址有效"
                        Return returns
                    Else
                        returns.flag = 2
                        returns.returnmsg = "只有域名有效,但用户信箱无效"
                        Return returns
                    End If
                End If
                '结束与邮件服务器的会话
                SendData(oStream, "QUIT" & vbCrLf)
                oConnection.Close()
                oStream = Nothing
            Catch
                returns.flag = 3
                returns.returnmsg = "邮件地址有错误"
                Return returns
            End Try
        End Function
      Private Function GetMailServer(ByVal sDomain As String) As String
            Dim info As New ProcessStartInfo
            Dim ns As Process
            '调用Windows的nslookup命令,查找邮件服务器
            info.UseShellExecute = False
            info.RedirectStandardInput = True
            info.RedirectStandardOutput = True
            info.FileName = "nslookup"
            info.CreateNoWindow = True
            '查找类型为MX。关于nslookup的详细说明,请参见
            'Windows帮助
            info.Arguments = "-type=MX " + sDomain.ToUpper.Trim
            '启动一个进行执行Windows的nslookup命令()
            ns = Process.Start(info)
            Dim sout As StreamReader
            sout = ns.StandardOutput
            ' 利用正则表达式找出nslookup命令输出结果中的邮件服务器信息
            Dim reg As Regex = New Regex("mail exchanger = (?<server>[^\\\s]+)")
            Dim mailserver As String
            Dim response As String = ""
            Do While (sout.Peek() > -1)
                response = sout.ReadLine()
                Dim amatch As Match = reg.Match(response)
                If (amatch.Success) Then
                    mailserver = amatch.Groups("server").Value
                    Exit Do
                End If
            Loop
            Return mailserver
        End Function   
        '获取服务器应答数据,并将其转换为String
        Private Function GetData(ByRef oStream As NetworkStream) As String        Dim bResponse(1024) As Byte
            Dim sResponse As String        Dim lenStream As Integer = oStream.Read(bResponse, 0, 1024)
            If lenStream > 0 Then
                sResponse = Encoding.ASCII.GetString(bResponse, 0, 1024)
            End If
            Return sResponse
        End Function
        '向邮件服务器发送数据
        Private Function SendData(ByRef oStream As NetworkStream, ByVal sToSend As String) As String
            Dim sResponse As String
            '将String转换成Byte数组
            Dim bArray() As Byte = Encoding.ASCII.GetBytes(sToSend.ToCharArray)
            '发送数据
            oStream.Write(bArray, 0, bArray.Length())
            sResponse = GetData(oStream)
            '返回应答
            Return sResponse
        End Function
        '服务器是否返回肯定的回答?
        Private Function ValidResponse(ByVal sResult As String) As Boolean
            Dim bResult As Boolean
            Dim iFirst As Integer
            If sResult.Length > 1 Then
                iFirst = CType(sResult.Substring(0, 1), Integer)
                '如果服务器返回应答的第一个字符小于'3'
                '我们认为服务器已认可刚才的操作
                If iFirst < 3 Then bResult = True
            End If
            Return bResult
        End Function
      

  5.   

    多谢楼上的我现在是要写式样书,然后客户确认了再写代码。所以现在着急的是不知道会出现什么样的Exception
    不过,还是多谢你
      

  6.   

    名称:ASP.NET System.Web.Mail 
    地址:http://www.systemwebmail.com/faq/3.8.aspx
    描述:邮件发送常见问题解决方法