如何找出正在使用的SMTP服务器?

时间:2010-01-31 17:44:03

标签: asp.net email smtp

我最近接手了一个前雇员在asp.net上建立客户网站的责任。 (他急着为客户工作!)

该公司将在不久的将来转向PHP平台,但在此之前他们正在处理一些电子邮件问题。 注意:我不精通asp.net

现在,这个客户网站上的所有代码都没有最近更改过。 我们将其托管在英国Namesco的经销商托管帐户中。

我认为问题在于SMTP服务器不允许这些电子邮件通过。但是我找不到代码中设置SMTP地址的位置?

此客户端设置的一些背景信息:

他们有两个网站,主网站的域名以.co.uk结尾 然后是一个单独的网站,其域名以.tv结尾

网站表单的.co.uk和.tv代码完全相同。 .co.uk电子邮件正在通过,但.tv电子邮件突然停止。

当潜在客户填写网络表单并点击发送时。该脚本调用一个数据库,该数据库将一些额外的文本添加到电子邮件中并添加一个FROM地址:

E.g。 noreply@customersite.tv noreply@customersite.co.uk

如果FROM:地址从.tv更改为.co.uk,则.tv网站webforms发送的电子邮件确实成功到达。所以对我来说问题是SMTP服务器不再喜欢.tv FROM地址了?

所以客户仍在收到他们的电子邮件,但这会弄乱他们设置的邮箱过滤。所以他们希望像以前一样工作。

以下是联系我们页面的aspx.cs文件中的代码:

  using System;  
  using System.Collections.Generic;  
  using System.Web;  
  using System.Web.UI;  
  using System.Web.UI.WebControls;  
  using System.Data;  
  using System.Data.Sql;  
  using System.Data.SqlClient;  
  using System.Data.SqlTypes;  
  using System.Configuration;  
  using System.Web.Mail;  
  using System.Text;  


 public partial class contactus : System.Web.UI.Page  
 {  
    protected void Page_Load(object sender, EventArgs e)  
   {  
       this.Master.FindControl("divMasterContactForm").Visible = false;  
       this.Master.FindControl("contactFormHeader").Visible = false;  
   }  
   protected void butSubmit_Click(object sender, ImageClickEventArgs e)  
   {  
       string strConnection, strCommand, strPage;  

       strPage = Request.Url.ToString();  
       strConnection = ConfigurationManager.ConnectionStrings["dbString"].ConnectionString;  
       strCommand = "SELECT * FROM [mailOptions] WHERE [url] LIKE 'customerswebsite.tv'";  
       StringBuilder strBody = new StringBuilder();  

       SqlConnection myConnection = new SqlConnection(strConnection);  

       SqlCommand myCommand = new SqlCommand(strCommand);  
       myCommand.Connection = myConnection;  

       myConnection.Open();  

       try  
       {  
           SqlDataReader myReader = myCommand.ExecuteReader();  

           while (myReader.Read())  
           {  

               strBody.Append("<html><body><font face='Arial'><br>");  
               strBody.Append(txtQuery.Text);  
               strBody.Append("<br><br>Regards,<br><br>");  
               strBody.Append(txtFirstName.Text + " " + txtLastName.Text);  
               strBody.Append("<br><br>Telephone number: " + txtPhone.Text);  
               strBody.Append("<br><br>Mobile Number: " + txtMobile.Text);  
               strBody.Append("<br><br>Email Address: <a href=mailto:" + txtEmail.Text + ">" + txtEmail.Text + "</a></font></body></html>");  


               MailMessage msgMail = new MailMessage();  
               msgMail.To = myReader["to"].ToString();  
               msgMail.Bcc = "info@ourwebdesignfirm.com";  
               msgMail.From = myReader["from"].ToString();  
               msgMail.Subject = ddQueryType.SelectedValue + " From: " + txtFirstName.Text + " " + txtLastName.Text + ". Generated from " + myReader["leadSource"].ToString();  
               msgMail.BodyFormat = MailFormat.Html;  
               msgMail.Body = strBody.ToString();  
               //lblConfirmation.Text = strBody.ToString();  
               SmtpMail.Send(msgMail);  

               panForm.Visible = false;  
               panConfirm.Visible = true;  
               lblSubject.Text = ddQueryType.SelectedValue;  
               lblFrom.Text = txtEmail.Text;  
               lblBody.Text = txtQuery.Text;  
               lblFirstName.Text = txtFirstName.Text;  
               lblLastName.Text = txtLastName.Text;  
               lblDate.Text = DateTime.Now.ToLongDateString();  
               lblTime.Text = DateTime.Now.ToShortTimeString();  
           }  
           myReader.Close();  
       }  
       catch  
       {  
           lblConfirmation.Text = "Sorry I broke part way through, please call us instead on the number above.";  
       }  

       myConnection.Close();  
   }  
  }  

目前我的问题是我无法测试或跟踪这些电子邮件的路径,因为我找不到电子邮件使用的SMTP服务器? 任何帮助表示赞赏

3 个答案:

答案 0 :(得分:3)

SMTP服务器详细信息很可能存储在web.config文件中。看看您是否可以在web.config文件中找到<system.net>标记。

<system.net>
        <mailSettings>
            <smtp  from="user@domain.com">
                <network  host="SMTP.SITE.COM" port="25" userName="name@domain.com" password="yourPassword"/>
            </smtp>
        </mailSettings>
    </system.net>

答案 1 :(得分:0)

您可以使用诸如Wireshark(免费)之类的网络嗅探器来跟踪SMTP流量,但在下载/安装/使用它之前,请确保您具有使用此类工具的管理权限:此类工具具有顽皮用途以及良性用途

答案 2 :(得分:0)

确保DNS不是问题。如果发送域的反向DNS查找未列出您的站点,或者可能没有PTR记录,那么应该接收您的测试电子邮件的邮件主机是否不再接受邮件?

巧合的是,我上周遇到了同样的问题。成功发送的电子邮件突然停止工作,因为服务器显然是因为这些原因而被列入灰名单。

如果您的应用使用的是本地SMTP服务器,则会在Windows事件文件中看到SMTP错误。