none
System.net.mail 送信 RRS feed

  • 問題

  •  

    今天玩了一下發信的功能寫了一支小程式

    可是卡在smtp 認證的問題

    Code Snippet

     

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

          Dim client As New SmtpClient("kenzone.net")
            Dim mail As New MailMessage()
            mail.From = New MailAddress("
    ken@kenzone.net")
            mail.To.Add("
    ken6558@gmail.com")
            mail.Subject = "This is my test mail 中文"

          mail.IsBodyHtml = True
            mail.Body = "test 中文 哈哈" & Now & "<BR> <H1> HTML format </H1> 中文 "
         

           client.UseDefaultCredentials = False
             client.Credentials = New NetworkCredential(me.textbox1.txet, me.textbox2.txt)
            client.DeliveryMethod = SmtpDeliveryMethod.Network
                    Try
                client.Send(mail)
                MsgBox("ok")
            Catch ex As Exception
                MsgBox(ex.ToString)

            End Try
        End Sub

     

    請問各位我smtp認證的部份這樣寫對嗎

    錯誤訊息

    System.Net.Mail.SmtpException: 參數或引數中的語法錯誤。 伺服器回應為: Authentication failed.
       於 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
       於 System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
       於 System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
       於 System.Net.Mail.SmtpClient.Send(MailMessage message)

     

    於是我用Outlook express 試了一下,確定是不是smtp server 的問題

     

    後來我把server 上的log拿來看了一下

    發現二個方法傳出去的訊息好像不太一樣

    失敗 (用vb.net)

    [4532]06/29/2007 20:02:30.039 <SMTP> AUTH login a2Vu
    [4532]06/29/2007 20:02:30.039 <SMTP> 334 VXNlcm5hbWU6
    [4532]06/29/2007 20:02:30.119 <SMTP> NJUWNTA4
    [4532]06/29/2007 20:02:30.119 <SMTP> 334 UGFzc3dvcmQ6
    [4532]06/29/2007 20:02:30.209 <SMTP> MAIL FROM:<ken@kenzone.net>
    [4532]06/29/2007 20:02:30.209 <SMTP> 501 Authentication failed.

     

    成功(用outlook express)
    [4212]06/29/2007 19:57:12.582 <SMTP> AUTH LOGIN
    [4212]06/29/2007 19:57:12.582 <SMTP> 334 VXNlcm5hbWU6
    [4212]06/29/2007 19:57:12.662 <SMTP> A2VU
    [4212]06/29/2007 19:57:12.662 <SMTP> 334 UGFzc3dvcmQ6
    [4212]06/29/2007 19:57:12.753 <SMTP> NJUWNTA4
    [4212]06/29/2007 19:57:12.753 <SMTP> 235 Authentication successful.

     

     

    2007年6月29日 下午 12:18

解答

  • ...拍謝

    找了半天好像是當初mail server的bug

    看他網站寫的意思好像他是用.net1.1 寫的

     

    如果要用System.Net.Mail這個namespace 的話就要升級才行

     

    我想應該是這個問題吧

    2007年7月1日 上午 04:55

所有回覆

  • ...拍謝

    找了半天好像是當初mail server的bug

    看他網站寫的意思好像他是用.net1.1 寫的

     

    如果要用System.Net.Mail這個namespace 的話就要升級才行

     

    我想應該是這個問題吧

    2007年7月1日 上午 04:55
  • 最近也发现了这个问题
    我认为是 .net 2.0 中 SMTP client实现上不大规范

    不应该将 AUTH login 和 用户id的base64 放在一行提交

    因为所有的主流邮件客户端软件,outlook、outlook express、foxmail等,都是采用 独立成行的方式
    先发送AUTH LOGIN <CR>,等待应答后再发送用户id的base64的

    真希望MS能在SMTP client中改正
    不知道是否已经出了fix 
    2009年8月14日 上午 01:49