2012-05-29 216 views
0

我已經在C#中用asp.net webservice發送給定mailid上的郵件作爲參數。用垃圾郵件發送的郵件

郵件已發送,但它顯示爲垃圾郵件,而不是收件箱郵件。

我已經使用了下面的代碼;

.NET代碼:

public int SendMail(string mailto, string username, string password) 
    { 
     try 
     { 
      string mailFrom = "[email protected]"; 
      string siteName = "www.XYZ.com"; 
      MailAddress fromAddress = new MailAddress(mailFrom, siteName); 
      SmtpClient mailClient = new SmtpClient(); 

      MailMessage message = new MailMessage(); 
      message.From = fromAddress; 
      message.To.Add(mailto); 

      message.Subject = "Your User Name and Password"; 
      message.IsBodyHtml = true; 

      mailClient.Host = "relay-hosting.secureserver.net"; 
      mailClient.UseDefaultCredentials = false; 
      mailClient.EnableSsl = false; 

      string body = "<HTML><BODY><CENTER><H2>Your User Name :'" + username + "' </H2><BR/><H2>Your Password :'" + password + "' </H2></CENTER></BODY></HTML>"; 

      message.Body = body; 

      mailClient.Send(message); 

      return 1; 
     } 
     catch (Exception ex) 
     { 
      return 0; 
     } 
    } 

WEB.CONFIG CODE:

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
      <network host="relay-hosting.secureserver.net" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 

可以採取什麼問題嗎?

謝謝。

回答

2

MAILMESSAGE你的內容被確定爲收件人的供應商,或者您使用列入黑名單中繼服務器的垃圾郵件。如果您使用的是relay-hosting.secureserver.net,則後面的情況可能就是這種情況。我建議使用比GoDaddy更值得信賴的中繼提供商。

+0

@ lukiffer-感謝您的回覆。你能否建議其他的替代方案?我應該爲此編寫哪些代碼? – ios

+1

首先,我會說使用'noreply @ yourdomain.com' - 這樣一個過濾器期待一個自動化的電子郵件。另外,您應該在郵件中添加所需的退出和發件人標識信息(美國要求)以避免被過濾。如果這是一個黑名單問題,還有許多其他具有良好聲譽的SMTP提供商。 AuthSMTP是我過去使用過的。 – lukiffer

+0

哦。好。謝謝。你能提供我可以用於解決問題的示例代碼嗎? – ios

2

您的FROM地址是GMAIL.COM,您不是從GMAIL服務器發送電子郵件,而是從其他服務器發送郵件。使用DomainKeys識別郵件(DKIM)和發件人策略框架(SPF),現在可以(以及大多數系統管理員)在域的DNS記錄中爲該域指定授權的電子郵件發送服務器。這樣,當電子郵件收件人服務器收到電子郵件時,它可以通過檢查發件人域的DNS中提及的被授權的服務器列表來檢查電子郵件發送服務器,以檢查電子郵件源的真實性。如果不匹配,則根據發件人域的系統管理員在DNS記錄中設置或指定的規則,電子郵件可能會被徹底拒絕或作爲垃圾郵件保存在垃圾郵件文件夾中。

我想這就是發生了什麼。在發送電子郵件之前,您還應該使用http://www.mxtoolbox.com/blacklists.aspx服務檢查發送服務器(SMTP)憑據。

2

如果您從一個沒有有效SPF記錄的IP地址發出的電子郵件可能會顯示爲垃圾郵件,因爲您聲稱該域名來自該域。在這個例子中,「」relay-hosting.secureserver.net「沒有一個有效的IP地址作爲gmail的SMTP服務器。

嘗試做一個測試發送從實際的域名,你將在現實生活中使用。的「[email protected]

如果仍然被標記爲垃圾郵件是很容易的添加SPF記錄測試@youractualdomain.com這裏是幫助了我在過去的一個站點: http://www.zytrax.com/books/dns/ch9/spf.html

1

有幾件事情可以共同提高您的電子郵件的垃圾郵件分數記住,它不是垃圾郵件/不發垃圾郵件,而是一個「垃圾郵件分數」電子郵件將被接收服務器標記爲垃圾郵件。

我猜想,在遊戲中你的情況的因素有如下因素:

  • HTML體別無選擇,短信
  • 發件人地址不符合實際的服務器的郵件是從
  • 發從地址不存在
  • SMTP服務器(relay-hosting.secureserver.net)具有低信譽
  • 沒有SPF或域關鍵字記錄

的解決方案是在幾個點,以及:

  • 創建消息的替代文本版本,包括它在體內(this answer解釋如何做到這一點)
  • 選用顯示一個從地址實際存在的電子郵件從
  • 使用一個有信譽的供應商發送您的SMTP服務器的服務器上,如SendgridpostmarkAppMailjet
  • 指定SPF和DomainKeys的DNS記錄允許接收服務器識別您的消息來自正確的服務器

祝您好運!