我們有一個C#ASP.Net項目,它通過SMTP發送電子郵件。
我們有一個正常的密碼恢復週期,發送兩封電子郵件。 第一個有一個訪問代碼來恢復密碼,第二個返回一個臨時密碼。通過.Net的SMTP C#Web應用程序 - 不在生產服務器上發送的第二封電子郵件
當用戶請求他丟失的密碼時,總是收到此電子郵件。 然後,用戶點擊電子郵件中的鏈接,輸入代碼併發送第二封電子郵件。第一封電子郵件總是收到。
第二封電子郵件始終在我們的開發環境中收到,但只在我們的部署版本中間歇性收到。 (Webdrive服務器)
第二封電子郵件使用相同的郵件配置。它是我們稱之爲發送方法的郵件消息對象。我們沒有收到任何錯誤消息。我們認爲它可能被視爲垃圾郵件,但..... 任何想法?
電子郵件在單獨的線程上運行。這兩封電子郵件是異步發送的。
電子郵件的web.config settinga是:
<mailSettings>
<smtp deliveryMethod="Network" from="[email protected]">
<network host="smtp.webhost.co.nz"
defaultCredentials="false"
enableSsl="true"
password="password"
port="587"
userName="[email protected]"/>
</smtp>
</mailSettings>
下面的代碼:
public bool SendEMailTempPass(string EmailRecipients, string Subject, string Body, bool isHTML = true)
{
try
{
var sendMailThreadPass = new Thread(() =>
{
System.Net.Configuration.SmtpSection smtpSettings = new System.Net.Configuration.SmtpSection();
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();//settings.Smtp.Network.Host);
string strFrom = ConfigurationManager.AppSettings["Mailto"];
MailMessage mailObj = new MailMessage(strFrom, EmailRecipients, Subject, Body);
mailObj.IsBodyHtml = isHTML;
smtp.SendCompleted += new SendCompletedEventHandler(PassChangeEmail_SendCompleted);
smtp.SendAsync(mailObj, null);
});
sendMailThreadPass.Start();
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
return false;
}
ErrorMessage = "";
return true;
}
void PassChangeEmail_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
{ }
else if (e.Error != null)
{
ErrorMessage = e.Error.ToString();
EmailStatus = 0;
}
else
{
ErrorMessage = "";
SuccessMessage = "Thank you. We will be in touch!";
EmailStatus = 1;
}
}
這是它被怎麼叫:
string body = PassResetEmail.PopulateBodyPassReset(this.Name + " " + this.Lastname, LinkURL,PicURL, NewPassword, strPassResetEmailTemplate);
PassResetEmail.SendEMailTempPass(this.Email, "Change your temporary password", body, true);
我用谷歌進行了測試我們遇到了同樣的問題:第一封電子郵件已發送,第二封郵件很少發送。
任何想看看或看什麼的想法?
起初我們認爲它可能是某種垃圾郵件過濾器,但它似乎與兩個不同的提供者相同。
另一件事是,即使使用相同的郵件提供程序設置,它在我們的本地環境中也能正常工作。
任何想法都會非常感謝!
謝謝!
你的代碼在哪裏發送郵件?你有沒有調試過它,並且它是否成功執行發送,沒有任何異常? –
謝謝,我添加了電子郵件例程。謝謝你的幫助! – DataAnalyst1