如何通过代码在asp.net中发送电子邮件

时间:2013-03-08 22:19:03

标签: asp.net email outlook

我很难通过我的asp.net网站,通过UKFast Cloud Shared VPS上的注册/在线域发送电子邮件。

我的网站和域名在其云计算/ VPS服务器(例如www.mysite.co.uk)上使用UKFast托管。我的网络应用程序托管在专用服务器上(例如www.mysite-ssl.co.uk)。我想通过我的VPS上注册的域从专用服务器发送电子邮件。

我可以通过Outlook连接,并发送接收电子邮件,没有任何问题: Outlook Setup

但是,因为我在VPS /云服务器上,所以如果我从代码发送,UKFast建议我必须使用“localhost”或“127.0.0.1”。但是我没有看到Outlook连接和发送电子邮件有什么不同,我的代码试图从专用服务器通过VPS域/邮件尝试做什么:

Imports System.Net.Mail

Public Shared Function SendMail(ByVal email As String, ByVal name As String, ByVal hear As String, ByVal mess As String) As String

    Dim mail As New MailMessage()

    mail.From = New MailAddress(email)
    mail.To.Add("******@gmail.com")

    mail.Subject = "Contact Email from My Website"
    mail.IsBodyHtml = True
    Dim str As String = "<table border=""1"" cellpadding=""4"" cellspacing=""0""><tr><td>Name:</td><td>" & name & "</td></tr><tr><td>" & "Email:</td><td>" & email & "</td></tr><tr><td>Hear:</td><td>" & hear & "</td></tr><tr><td valign=""top"">Message:</td><td>" & mess.Replace(Chr(10), "<br />") & "</td></tr></table>"

    mail.Body = str

    Dim smtp As New SmtpClient("mail.-same as outgoing mail server in Outlook-.co.uk")
    smtp.Port = 25
    smtp.Credentials = New System.Net.NetworkCredential("UserNameFromOutlook","PasswordFromOutlook")
    Try
        smtp.Send(mail)
    Catch ex As Exception
        Return ex.ToString

        Return ("error")
    End Try

    Return ("ok")
End Function

然而,当从asp.net页面发送时,我收到错误:

  

System.Net.Mail.SmtpException:发送邮件失败。 ---&GT; System.Net.WebException:无法连接到远程服务器---&gt; System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它(myipaddress):25在System.Net.Sockets.Socket。

我看不出为什么Outlook可以连接没有问题,但我的SendMail代码不能使用相同的凭据执行相同的操作。

我的web.config有:

<configuration>
<system.net>
    <mailSettings>
        <smtp from="info@busybeesdingwall.co.uk">
            <network host="mail.-same as outgoing mail server in Outlook-" port="25" userName="UserNameFromOutlook" password="PasswordFromOutlook" />
        </smtp>
    </mailSettings>
</system.net>
</configuration>

我的代码有问题,我可以更改以允许我发送电子邮件吗?

感谢您的帮助,

标记

2 个答案:

答案 0 :(得分:1)

    protected void Btn_SendMail_Click(object sender, EventArgs e)
    {
        MailMessage mailObj = new MailMessage(
        "noreplay@myDomain.com", toTextBox.Text, subTextBox.Text, msgTextBox.Text);

        SmtpClient SMTPServer = new SmtpClient("yourSMTPServer", 25);

        try
        {
            SMTPServer.Send(mailObj);
        }
        catch (Exception ex)
        {
            Label1.Text = ex.ToString();
        }

        Label1.Text = "Msg sent";
    }

您只需要添加控件

toTextBox, subTextBox, msgTextBox

答案 1 :(得分:0)

您没有与主持人联系。要检查的第一个区域是您的web.config文件。听起来你已经设置了这个:

<mailSettings>
<smtp>
<network host="localhost"

确认设置完成后,您可能需要在服务提供商中设置一些内容。通常,他们需要在他们的工具中进行设置。