2011-08-25 52 views
2

場景:我們正在使用createwizard控件爲我們的網站創建用戶。當用戶有電子郵件時,我們只需向用戶發送電子郵件,其中包含用戶名和密碼,說明他們的帳戶已創建。使用MailMessage和SMTPClient。發送電子郵件像@mailto,但從ASP.Net後面的代碼

問題:當用戶沒有電子郵件(如臨時員工,學生)。我需要能夠生成電子郵件,但有它通過創作者的郵件客戶端打開,使他們能夠在輸入發郵件給自己/查看用戶名和密碼。類似於@mailto功能。

問題:有沒有辦法從背後的代碼做到這一點?我嘗試過搜索,但無處不在告訴我使用MailMessage和SMTPClient,這是我不需要的。

在此先感謝。

+4

**絕不**在電子郵件中發送密碼,除了生成的密碼必須在下次登錄時更改。 – SLaks

+0

@SLaks:我同意,除非它是加密的,我的意思是:) –

+0

@SLaks,知道會出現大聲笑。這是一個自動生成的密碼,因此用戶需要知道它是什麼。因此電子郵件。 – Gage

回答

5

您可以創建一個mailto-link並使用JavaScript進行點擊。

在這裏看到:How do I programmatically click a link with javascript?

或者你可以創建一個文本框「主題和正文」形式,和一個按鈕發送,在那裏你等待,直到用戶填寫出來(To域),然後你用smtpclient發送郵件。

在旁註:爲什麼不只是提示一個電子郵件地址,然後發送呢?

+0

這就是我的想法,但我希望有一個更簡單的方法。 – Gage

+0

@Gage A:我不明白這是如何特別困難。 Shadow Wizard已經爲你提供了mailto鏈接的代碼,點擊鏈接的代碼也在那裏。所有你需要做的就是添加一個腳本塊的內容clickLink(document.getElementById('yourlinkid'));在頁面的末尾。 –

2

那麼..你可以做一個response.write或使用替代控制的某個地方,鏈接到一個函數,該函數生成一個href = mailto:.......等。 HTML

如果你想讓它自動完成,你可以做一個JavaScript重定向目標

1

我想,我終於明白了你是什麼之後。此代碼應該工作:

string sMailTo = "[email protected]"; 
string subject = "New member data"; 
string body = "New member has been added.\nName: John Doe\nPassword: pass"; 
Process.Start(string.Format("mailto:{0}?subject={1}&body={2}", sMailTo, Uri.EscapeUriString(subject), Uri.EscapeUriString(body))); 

請注意,您可以只使用純文本,從我看到你不能強制HTML格式。

編輯:由於它是ASP.NET應用程序,所以這種方法實際上是沒用的,因爲郵件客戶端將在服務器機器而不是訪客機器上打開。

對於那些使用WinForms或任何非Web環境的人來說,這一點是不言而喻的。

對於ASP.NET而言,唯一的方法是調用<a href="mailto:...">錨點的客戶端腳本。

+0

完美謝謝! – Gage

+0

乾杯,花了我很長時間才明白你在做什麼.. –

+0

不會。這會在服務器上運行,而不是在客戶端運行。 – SLaks