我最近接手了一个前雇员在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服务器? 任何帮助表示赞赏
答案 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错误。