星期日, 5月 16, 2010

如何寄 email 到本機 folder

不知道大家是否有寫過 EDM 或是 server 端寄發 email 給 client 的需求, 最近 Bibby 有寫到這個功能, 每次次寫完需要測試,就是要寄去 gmail 或是 yahoo mail 來收信, 有時候我 cable 提供的 smtp 不知道怎樣, 都要等十幾分鐘才會收到, 自己覺得這個方式真的太笨了, 去問幾個前輩,得到一個方法, 就是只要本機安裝 smtp service 就可以在 "C:\Inetpub\mailroot\queue" 找到剛剛寄的測試信, 試了一下還真的可以做到這個需求, 不過話說回來, 還是需要再安裝 smtp service ,真是有點麻煩, 所以又查一下 msdn 還有網路, 發現有更不錯的方法, 這裡跟大家分享一下..直接看 code 吧..

var smtpClient = new SmtpClient();
smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
var folderPath = Server.MapPath("~/EmailFolder");
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
smtpClient.PickupDirectoryLocation = folderPath;

只要這樣就可以在 root 下面的 EmailFolder 看到測試信啦, 很簡單吧, 不過 .eml 副檔名要怎麼打開呢, 這只是一個小技巧啦, 把副檔名改成 .mht 在用 ie 去開啟它就好了..讚..

收工..放空去..

參考:
http://msdn.microsoft.com/zh-tw/library/system.net.mail.smtpclient.aspx

星期五, 5月 07, 2010

asp.net使用prompt

有用過javascript的都應該知道prompt, 這method可以很簡單的去跟使用者互動, 又不用使用一堆plugin就可以達成, 所以在寫案子的時候, 如果沒有啥詭異或是特別的需求, 用prompt就可以輕鬆解決這種需求, 今天就寫個範例, 來讓prompt收到的值,丟到server端來處理,直接看code吧

<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btn1" runat="server" Text="Prompt" OnClientClick="return false;" />
<asp:HiddenField ID="hid" runat="server" />
</div>
</form>
<script type="text/javascript">
$(document).ready(function () {
$('#btn1').click(function () {
var returnValue = prompt('取消原因', '');
$('#hid').val(returnValue);
ToPostBack();
});
});
</script>
</body>

public partial class prompt : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);

btn1.Click += new EventHandler(btn1_Click);

string fn = string.Format("function ToPostBack(){{{0}}};",
ClientScript.GetPostBackEventReference(this.btn1, null));

ClientScript.RegisterStartupScript(this.GetType(), "test", fn, true);

}

void btn1_Click(object sender, EventArgs e)
{
Response.Write(hid.Value);
}
protected void Page_Load(object sender, EventArgs e)
{

}
}

用一個hiddenfield就可以做出效果啦..優低..

參考:
http://msdn.microsoft.com/zh-tw/library/z89520ac%28VS.80%29.aspx