System.FormatException:指定的字符串不是电子邮件地址所需的格式

时间:2009-04-29 22:55:29

标签: asp.net xml vb.net formatexception

net和xml 即时通讯发送电子邮件 但它给了我一个错误

  

电子邮件地址来自xml文件

 The specified string is not in the form required for an e-mail address.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: The specified string is not in the form required for an e-mail address.

Source Error:

Line 82:             client.Host = "mail.host"
Line 83:             client.Port = 25
Line 84:             client.Send("from", txtTo.Text, txtSubject.Text, txtMessage.Text)
Line 85:             
Line 86:             lblMsg2.Text = "Email has been successfully sent"

Stack Trace:

[FormatException: The specified string is not in the form required for an e-mail address.]
   System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName) +934335
   System.Net.Mail.MailAddress.ParseValue(String address) +245
   System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding) +87
   System.Net.Mail.Message..ctor(String from, String to) +127
   System.Net.Mail.MailMessage..ctor(String from, String to) +117
   System.Net.Mail.SmtpClient.Send(String from, String recipients, String subject, String body) +31
   ASP.adminpanel_admincontact_aspx.btnSend_Click(Object s, EventArgs e) in C:\Users\Farnu\Desktop\xmlproject\adminpanel\AdminContact.aspx:84
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746

AdminContact.aspx

<%@ Page Language="VB" MasterPageFile="ContentMasterPage.master" Debug="true"%>  
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Net.Mail" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script runat="server">
    Sub Page_Load()
        If Not IsPostBack Then
            BindEmailList()
            pnlWriteEmail.Visible = False
        End If
        Dim Item As ListItem

        If chkSelectAll.Checked Then
            For Each Item In chklGuests.Items
                Item.Selected = True
            Next
        End If
    End Sub

    Sub BindEmailList()
        Dim dsGuestbookData As DataSet = New DataSet()
        Dim xmlDataDoc As XmlDataDocument
        Dim alGuest As ArrayList = New ArrayList()

        dsGuestbookData.ReadXml(Server.MapPath("../App_Data/Contact.xml"))
        xmlDataDoc = New XmlDataDocument(dsGuestbookData)

        Dim xnlGuests As XmlNodeList
        Dim xnGuest As XmlNode

        Dim xnlGuests1 As XmlNodeList
        Dim xnGuest1 As XmlNode

        xnlGuests = xmlDataDoc.GetElementsByTagName("contactmessage")
        xnlGuests1 = xmlDataDoc.GetElementsByTagName("contactmessage")

        For Each xnGuest In xnlGuests
            chklGuests.Items.Add(New ListItem(xnGuest.ChildNodes.Item(0).InnerXml))
            'lblGuests.Items.Add(New ListItem("<b>" & xnGuest.ChildNodes.Item(0).InnerXml & "</b><br/><b>" & "Msg:</b>" & xnGuest.ChildNodes.Item(1).InnerXml & "<br/><b>" & "Subject:</b>" & xnGuest.ChildNodes.Item(2).InnerXml & "<br/><br/>"))


            'lblGuests.Items.Add(New ListItem("<b>" & xnGuest.ChildNodes.Item(0).InnerXml & "</b><br/><b>" & "Msg:</b>" & xnGuest.ChildNodes.Item(1).InnerXml & "<br/><b>" & "Subject:</b>" & xnGuest.ChildNodes.Item(2).InnerXml & "<br/><br/>"))
        Next
    End Sub

    Sub btnNext_Click(ByVal s As Object, ByVal e As EventArgs)
        Dim item As ListItem
        Dim isSelected As Boolean = False

        For Each item In chklGuests.Items
            If item.Selected Then
                isSelected = True
                Exit For
            End If
        Next
        If isSelected Then
            lblMsg.Visible = False
            pnlSelectEmail.Visible = False
            pnlWriteEmail.Visible = True

            Dim strTo As String = ""

            For Each item In chklGuests.Items
                If item.Selected Then
                    strTo &= item.Value & ","
                End If
            Next

            strTo = Left(strTo, Len(strTo) - 1)
            txtTo.Text = strTo
        Else
            lblMsg.Visible = True
            lblMsg.Text = "Please select person(s)"
        End If
    End Sub

    Sub btnSend_Click(ByVal s As Object, ByVal e As EventArgs)
        If IsValid Then
            Dim client As New SmtpClient()
            client.Host = "mail.host"
            client.Port = 25
            client.Send(txtTo.Text, txtSubject.Text, txtMessage.Text, "Company Name")

            lblMsg2.Text = "Email has been successfully sent"
            pnlEmailForm.Visible = False
        End If
    End Sub

</script>

<html>
<head><title>Contact</title></head>
<div id="content">
    <div class="about">
<body>
    <p>Contact messages</p>
    <p>List of all the users that contacted us</p>
    <p>Select user to send email, and then click the 'Next' button.</p>
    <br />
    <%--<asp:HyperLink ID="hlAdmin" Text="Go back to admin home" NavigateUrl="admindefault.aspx" runat="server"/>
    <br /><br />--%>
    <asp:Label ID="lblMsg" runat="server" />

<%--    <form runat="server">--%>
        <asp:Panel ID="pnlSelectEmail" runat="server">
            <asp:CheckBox ID="chkSelectAll" AutoPostBack="true" Text="Select All" runat="server" />
            <div style="margin-left:-3px;">
                <asp:CheckBoxList ID="chklGuests" runat="server" />
                <asp:CheckBoxList ID="lblGuests" runat="server" />
            </div>
            <p>
                <asp:Button ID="btnNext" type="Submit" OnClick="btnNext_Click" Text="Next" runat="server" />
            </p>
        </asp:Panel>

        <asp:Panel ID="pnlWriteEmail" runat="server">
        <br />
        <asp:HyperLink ID="hlSelectEmail" Text="Go back to select email list" NavigateUrl="AdminContact.aspx" runat="server" />
        <br /><br /><br />

        <asp:Label ID="lblMsg2" runat="server" />

        <asp:Panel ID="pnlEmailForm" runat="server">
            <table cellpadding="3px" cellspacing="0px" border="0px">
                <tr>
                    <td>To</td>
                    <td><asp:TextBox ID="txtTo" Text="" Columns="50" runat="server" /></td>
                </tr>
                <tr>
                    <td>Subject</td>
                    <td><asp:TextBox ID="txtSubject" Columns="50" runat="server" /></td>
                </tr>
                <tr>
                    <td>Message</td>
                    <td><asp:TextBox ID="txtMessage" TextMode="MultiLine" Columns="50" Rows="7" runat="server" /></td>
                </tr>
                <tr>
                    <td>&nbsp;&nbsp;</td>
                    <td>
                        <p>
                            <asp:Button ID="btnSend" type="submit" OnClick="btnSend_Click" Text="Send" runat="server" />
                        </p>
                    </td>
                </tr>
            </table>
        </asp:Panel>

        </asp:Panel>

<%--    </form>
--%>    

</body>

</html>

   </div>
        <img src="../App_Themes/theme/html/images/phone.jpg" alt="" width="953" height="87" /><br />
    </div>
</asp:Content>

contact.xml

<?xml version="1.0" encoding="utf-8"?>
<contactmessages>
  <contactmessage>
    <useremail>username@yahoo.com</useremail>
    <subject>hello</subject>
    <message>Good Job!</message>
    <date>4/13/2009 8:03:25 PM</date>
  </contactmessage> 
 <contactmessage>
    <useremail>user@yahoo.com</useremail>
    <subject>hello</subject>
    <message>Good Job!</message>
    <date>4/13/2009 8:03:25 PM</date>
  </contactmessage>
<contactmessages>

2 个答案:

答案 0 :(得分:4)

您对来自地址的论证不是有效的电子邮件地址。

client.Send("from", 

From应该是有效的电子邮件地址。

答案 1 :(得分:2)

Sub btnSend_Click(第84行):

client.Send("from", txtTo.Text, txtSubject.Text, txtMessage.Text) 

"from"应该是一个格式良好的电子邮件地址。