【问题标题】:How do I find out what SMTP server is being used?如何找出正在使用的 SMTP 服务器?
【发布时间】:2011-01-11 11:20:41
【问题描述】:

我最近接手了负责管理一个由前雇员在 asp.net 中构建的客户网站。 (谁急着为所说的客户工作!)

该公司将在不久的将来迁移到 php 平台,但在此之前他们会遇到一些电子邮件传递问题。 注意:我不精通asp.net

现在,该客户网站上的任何代码最近都没有更改。 我们将它们托管在英国 Namesco 的经销商托管帐户上。

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

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

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

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

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

例如 noreply@customersite.tv noreply@customersite.co.uk

如果 FROM: 地址从 .tv 更改为 .co.uk,则从 .tv 网站网络表单发送的电子邮件确实会成功到达。所以对我来说,问题是 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 服务器? 任何帮助表示赞赏

【问题讨论】:

  • 谁能回答这个问题:如果 SMTP 服务器位置未在此代码中的任何位置声明,它如何发送电子邮件?

标签: asp.net email smtp


【解决方案1】:

SMTP 服务器详细信息很有可能存储在 web.config 文件中。查看是否可以在 web.config 文件中找到 &lt;system.net&gt; 标记。

<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>

【讨论】:

  • 我明天早上在办公室时会检查一下。但是,我很确定我已经在 web.config 文件中搜索了 smtp 这个词,但什么也没回来。我会再次检查,尽管欢呼。
  • 酷。否则,在 Visual Studio 中,单击 ASP.NET 配置按钮。图标是地球和锤子,位于解决方案资源管理器的顶部(右侧)。这使您可以通过浏览器配置您的 ASP.NET 应用程序(大多数设置只是为您编辑 web.config 文件)。您也可以在那里编辑 SMTP 设置,因此如果您在 web.config 中找不到详细信息,请查看那里,看看是否有帮助。
  • 您好,我检查了 web.config 文件,文件中没有 标记?我还进入了 Visual Studio 并单击了 ASP.NET 配置按钮。当我查看“配置 SMTP 设置”时,唯一的选项集是服务器端口?这不寻常吗?
  • 嗨。由于之前的开发使用 web.Mail.SmtpMail 而不是 System.Net.Mail,如果没有设置 SMTP 客户端,默认是 localhost:http://msdn.microsoft.com/en-us/library/system.web.mail.smtpmail.smtpserver.aspx 这就是为什么在“配置 SMTP”中只提到了服务器端口设置”。我还应该补充一点,SmtpMail 类已过时http://msdn.microsoft.com/en-us/library/system.web.mail.aspx。如果仍然无法正常工作,您可以尝试改用 System.Net.Mail 命名空间。
  • 感谢您提供的信息。我去看看。
【解决方案2】:

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

【讨论】:

  • 谢谢。刚刚看了他们的视频教程嗖嗖!直接在我头顶。星期一早上我需要一些浓咖啡来振作起来
【解决方案3】:

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

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

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

【讨论】:

  • 我在发送邮件时没有收到任何错误。当数据库将 FROM 地址设置为 noreply@website.tv 将其更改为 .co.uk 并且他们通过就好了时,他们只是没有到达。
  • 我明白这一点。 SMTP 服务器很乐意将您的邮件排队,但它无法中继它。它不能以同步方式将这种情况报告回客户端。就我而言,邮件最终位于(MS)SMTP 服务器的 Queue 文件夹中,并在 24 小时后被移至 badmail 文件夹中。
  • 嗨 cdonner,感谢您对此的帮助,请您澄清您的评论(用外行术语)“如果相反,应该接收您的测试电子邮件的邮件主机是否不再接受邮件DNS 查找...” 另外,如果应用程序使用的是本地 SMTP 服务器,我该如何判断?
  • 只是一个快速更新。与我的托管公司交谈时,他们看到测试电子邮件因错误消息而停止:“所有 mx 记录都指向不存在的主机......” 域名不是由我们自己管理,而是由一家单独的公司管理。我需要打电话给他们看看发生了什么吗?
  • 同时检查他们在 .co.uk 域的 mx 记录中使用不同主机名的 DNS 区域,这可能解释了他们为什么会通过这些电子邮件
猜你喜欢
  • 2010-11-30
  • 2012-10-20
  • 2019-09-16
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2013-04-16
相关资源
最近更新 更多