2013-03-08 63 views
1

在asp.net中發送電子郵件我很難弄清楚如何通過我的asp.net網站,通過UKFasts雲共享VPS上的註冊/在線域發送電子郵件。如何通過代碼

我的網站和域名由UKFast在其Cloud/VPS服務器(例如www.mysite.co.uk)上託管。我的網絡應用程序託管在專用服務器上(例如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: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it (myipaddress):25 at System.Net.Sockets.Socket.

我不明白爲什麼Outlook可以沒有問題連接,但我的SendMail的代碼可以做不一樣的,具有相同的憑據。

我的web.config有:

<configuration> 
<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
      <network host="mail.-same as outgoing mail server in Outlook-" port="25" userName="UserNameFromOutlook" password="PasswordFromOutlook" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
</configuration> 

有什麼錯我的代碼,我可以改變,以允許我發送電子郵件?

感謝您的幫助,

馬克

+0

'telnet yourIPserver 25'是否適合你? – BrOSs 2013-03-08 22:38:00

+0

嗨 - 不管telnet mail.myipserver.co.uk或telnet mail.myipserver.co.uk:25,或telnet mail.myipserver.co.uk:587,它建議「無法打開連接到主機上端口XX:連接失敗「 - 那麼Outlook如何管理它? – Mark 2013-03-08 22:48:41

+0

你永遠無法發送任何電子郵件,直到你得到這樣的東西:'220 test.auto.mySMTPserver.com ESMTP服務(Lotus Domino版本8.5.3FP2 HF95)準備在星期二,30十月2012 08:27:31 - 0700'在telnet命令。所以,你應該專注於打開這個連接。 – BrOSs 2013-03-08 22:56:31

回答

1
protected void Btn_SendMail_Click(object sender, EventArgs e) 
    { 
     MailMessage mailObj = new MailMessage(
     "[email protected]", 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

+0

嗨 - 好吧,試過了,但消息仍然是:System.Net.Mail.SmtpException:發送郵件失敗。 ---> System.Net.WebException:無法連接到遠程服務器---> System.Net.Sockets.SocketException:由於目標機器主動拒絕它,因此無法建立連接myipaddress:System.Net.Sockets中爲25 .Socket.DoConnect - 嘗試25和587(仍不明白爲什麼Outlook可以做到這一點,而不是代碼!) – Mark 2013-03-08 23:25:24

+0

你如何連接到SMTP服務器? VPN? Outlook是否在代碼所在的同一臺機器上託管? – BrOSs 2013-03-08 23:26:41

+0

嗨 - 我正坐在家中,在本地計算機上 - Outlook運行的設置如上面的截圖所示。代碼在UKFast的專用服務器上運行。它試圖使用我的本地Outlook所連接的同一個電子郵件帳戶,通過我的網站所在的其他VPS UKFast服務器發送電子郵件(用於宣傳應用程序的網站以及應用程序本身位於兩臺獨立的服務器上,由UKFast主辦)。 – Mark 2013-03-08 23:30:28

0

。第一個要檢查的區域是你的web.config文件。這聽起來像你已經設置已經:

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

一旦你驗證,這是成立,你可能有話您的服務提供商內成立。通常,他們需要在他們的工具中進行設置。

+0

嗨 - 我已經添加了我的web.config到我的文章。麻煩的是,我需要將主機設置爲VPS上的郵件服務器,而不是專用服務器上。我希望能夠連接和發送電子郵件,與Outlook允許我一樣 - 即。從另一臺電腦。謝謝,Mark – Mark 2013-03-08 22:43:04

+0

我以爲「目標機器主動拒絕它」意味着有一個連接,但由於某種原因,它不允許通過, – Mark 2013-03-08 22:43:57