2009-12-15 59 views
1

我有一個需要發送電子郵件的應用程序。目前,這是我在用的:C# - 無需登錄服務器即可發送電子郵件

 System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage(); 
     MyMailMessage.From = new System.Net.Mail.MailAddress(fromemail.Text); 
     MyMailMessage.To.Add(toemail.Text); 
     MyMailMessage.Subject = subject.Text; 
     MyMailMessage.Body = body.Text; 
     System.Net.Mail.SmtpClient SMTPServer = new System.Net.Mail.SmtpClient("smtp.gmail.com"); 
     SMTPServer.Port = 587; 
     SMTPServer.Credentials = new System.Net.NetworkCredential("email", "password"); 
     SMTPServer.EnableSsl = true; 
     SMTPServer.Send(MyMailMessage); 

有一個簡單的方法來發送電子郵件,而無需登錄到服務器?謝謝。

+0

我很好奇你爲什麼需要這個?是否因爲你不想在你的應用程序中配置設置?或向用戶展示u/p? – Rippo 2009-12-15 08:38:10

+0

不確定「u/p」是什麼意思。這是一個將消息發送到手機的短信應用程序。它使用運營商的電子郵件擴展。所以它就像標準的電子郵件一樣發送。 – user 2009-12-15 08:41:16

+0

u/p - >用戶名/密碼 – liggett78 2009-12-15 08:51:58

回答

0

您需要一個不需要身份驗證的SMTP服務器,但要停止它作爲SPAM服務器,它需要其他類型的防護,如防火牆。

+0

所以我需要一個開放的中繼服務器?我能找到一個不會被列入黑名單的地方嗎? – user 2009-12-15 08:30:22

+0

你不可能找到可靠的。最好的選擇是安全地創建一個新帳戶並進行身份驗證,或者設置您自己的服務器。 – cjk 2009-12-15 08:32:35

+1

當你說安全地進行身份驗證時,你的意思是我會在程序中硬編碼登錄憑證嗎?如果是這樣,我怎麼會這樣做,沒有他們暴露於一個簡單的反編譯器? – user 2009-12-15 08:34:48

1

GMail的SMTP服務器始終需要驗證。您可能需要設置自己的服務器才能發送電子郵件而無需身份驗證

1

將SMTP服務器配置到本地網絡(在防火牆後面以避免成爲垃圾郵件源)並直接使用它。您可以在IIS中創建一個。

+0

問題是,其他人會在我的網絡之外使用它。 – user 2009-12-15 08:35:22

+0

然後爲您的應用程序在內部使用smtp服務器創建一個wcf服務,因此您只爲應用程序提供外部接口,但不提供打開的smtp服務器。 – jmservera 2009-12-15 08:43:15

1

有2種方式來實現這一目標:

1)使用本地SMTP服務器(例如一個與IIS Win2003的/ 2008服務器上)和消息寫入本地拾取隊列)。這是可能的最小的變化。

2)您需要解析目標smtp服務器。例如,當您想在msn.com上向某人發送電子郵件時,您需要獲取msn.com的MX記錄,例如像mx1.msn.com。然後,您可以直接連接到此SMTP服務器並將您的電子郵件發送給(本地)收件人。請注意,沒有內置的方式可以解析.NET中的MX主機(因爲在Dns類中沒有任何方法可以實現這一點) - 您需要「手動」執行此操作。大多數SMTP主機也會拒絕來自家庭/住宅IP地址的連接。

相關問題