asp.net和vb.net代码,用于通过smtp向多个电子邮件地址发送电子邮件

时间:2015-02-11 12:01:39

标签: asp.net vb.net email smtp

我是编码asp.net和vb.net的新手。我有一个用asp.net和vb.net构建的web表单。

在前端有四个字段,如下所示。

收件人邮件列表:下拉列表(下拉列表中的选项包括Managers,HR,Admin,IT等。每个选项名称包含多个电子邮件地址。即选择一个选项意味着用户在收件人字段中选择一组电子邮件地址)

来自字段:文本框(只读)

主题:文本框

消息: Textarea

发送电子邮件按钮

asp.net前端代码如下所示。

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">

<div class="aux-body">
    <div class="aux-body-content">

                <div class="form-element">
                    <label>Recipient Mailing list  </label>
                    <select runat="server" class="" id="comMailingList" datatextfield="name" datavaluefield="id"></select>
                 </div>

                <div class="form-element">
                    <label> From </label>
                    <input style="width: 98%;" runat="server" id="txtFrom" type="text" value="Careers portal" readonly="readonly" />
                </div>

                <div class="form-element">
                    <label> Subject </label>
                    <input style="width: 98%;" runat="server" id="txtSubject"  class="msubject" type="text" />
                </div>

                <div class="form-element">
                    <label> Message </label>
                    <textarea style="width: 98%; height: 100px;" runat="server" id="txtText"  ></textarea>

                </div>

                <div id="button-group">
                     <asp:LinkButton runat="server" ID="btnSend" CssClass="btn" Text="Send Email"></asp:LinkButton>
                </div>


    </div>
</div>
</asp:Content>

在后端,我已经构建了VB.net代码,如下所示。但我无法编写将发送电子邮件的代码。

Partial Class E4_Candidate_broadcast
Inherits System.Web.UI.Page





Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        If Not IsNothing(Request("b")) Then
            cid.Value = Request("b")
        End If
        litMyEmail.Text = UserEmail
        comMailingList.DataSource = Lists
        comMailingList.DataBind()
    End If
End Sub


Public ReadOnly Property Lists() As DataTable
    Get
        Return DB.GetData("select   ml.id, ml.name + ' (' + cast( count(mlc.mailinglistid) as nvarchar(10)) + ' contacts)' name from mailinglist ml join mailinglistcontact mlc     on ml.id = mlc.mailinglistid where ml.deleted = 0 and ml.createdby in (select userid from employeruser where employerid = @eid) group by ml.id, ml.name having count(mlc.mailinglistid) > 0 order by ml.name", DB.SIP("eid", LocalHelper.UserEmployerID()))
    End Get
End Property



Protected Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
    If Not String.IsNullOrWhiteSpace(txtSubject.Value) Then



        ''Selects the recipients name and email address 

        Dim contacts = DB.GetData("select title, name, surname, email from mailinglistcontact where mailinglistid = @mlid", DB.SIP("mlid", comMailingList.Value)), _
 mailers = New DataTable(), _
 mailerqueue = New DataTable(), _
        scheduleat = Now


        For Each contact As DataRow In contacts.Rows

           ''''Code for sending email''''


        Next



        Response.Redirect("broadcast-sent-complete.aspx?i=" & cbId)

    End If
End Sub


End Class

我通过谷歌搜索了几个例子,发现了几个链接。但我肯定不理解许多对发送电子邮件的代码至关重要的事情。

如果您帮我编写发送电子邮件的代码,我将非常感激。

谢谢

更新

我尝试过以下代码。但它不起作用。即电子邮件没有发送。代码将转到例外并说邮件发送邮件。请查看我的代码并指出我的错误。

Dim message As New MailMessage()
        For Each contact As DataRow In contacts.Rows

            Try
                Dim Client As New System.Net.Mail.SmtpClient

                With Client
                    If WebConfigurationManager.AppSettings("smtpserver").Length > 0 Then
                        .DeliveryMethod = Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory 'Net.Mail.SmtpDeliveryMethod.Network
                        .PickupDirectoryLocation = "c:/outbox/"
                        .Host = WebConfigurationManager.AppSettings("smtpserver")
                    Else
                        .DeliveryMethod = Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis
                    End If

                    With message
                        Dim FromAddress As MailAddress = New MailAddress("noreply@mypeoplebiz.com")
                        .From = FromAddress
                        .[To].Add(contact.Item("email").ToString())
                        .Subject = txtSubject.Value
                        .IsBodyHtml = True
                        .Priority = MailPriority.Normal
                        .BodyEncoding = Encoding.Default

                        If Not String.IsNullOrWhiteSpace(txtHtml.Value) Then
                            .Body = txtHtml.Value
                        End If


                        If Not String.IsNullOrWhiteSpace(txtText.Value) Then
                            .Body = txtText.Value
                        End If
                    End With



                    .Send(message)
                End With

            Catch Ex As Exception
                _error = Ex.Message
            End Try


        Next

0 个答案:

没有答案