خبرنامه

سلام
من می خواستم یک خبرنامه به زبان asp یا asp.net باشه
یک خبرنامه کامل تو مایه های webwiz
ممنون
 

MDP

Well-Known Member
ارسال ایمیل در ASP.NET با استفاده از HTML Template
آیا تاکنون سعی کرده اید برای سایت خود خبرنامه ایجاد کنید؟ آیا تاکنون وسوسه شده اید که سیستمی طراحی کنید که در صورتی که بینندگان سایت شما نظرات خود را در سایت شما وارد کنند برای آنها یک Email تشکرآمیز ارسال کنید؟ آیا می دانید ساختن یک HTML Template زیبا برای خبرنامه شما و استفاده همیشگی از آن جهت ارسال خبرنامه در ASP.NET بسیار ساده صورت می گیرد؟ چنانچه سوالات بالا شما را به دانستن بیشتر ترغیب کرده است به شما تبریک می گویم! چرا که در ادامه این مقاله شما روش بسیار ساده ارسال Emailهای HTML زیبا را بدون اینکه نگران چگونگی کدنویسی HTML متغیر رشته ای Body در MailMessage باشید را فرا خواهید گرفت.

برای شروع بیایید به روش کار نظری بیاندازیم: خوب احتمالا شما با روش ساختن یک نمونه از آبجکت MailMessage که در ASP.NET برای ارسال Email استفاده می شود آشنایی دارید (اگر این چنین نیست در ادامه مقاله به طور اجمالی توضیحاتی ارائه شده است) تنها قسمتی که باید مورد توجه قرار دهید این است که چگونه می توانیم Body نامه خود را به فرمت HTML و بدون نیاز به اینکه تمامی تگها را پشت سر هم در یک رشته طولانی و سردرگم کننده تایپ کنیم، درآوریم. یک ایده جالب این است که ما Template نامه خود را با استفاده از ادیتورهای WYSIWYG مثل FrontPage یا Dreamweaver طراحی کنیم و سپس تمامی کدهای HTML آن را درون یک متغیر رشته ای Import کرده و از آن استفاده کنیم. این کار بسیار آسان است. اما می توان این نامه را برای هر کاربر کمی سفارشی (Customize) کرد! برای مثال شما می توانید در ابتدای نامه کاربر را با نام وی مورد خطاب قرار دهید. بهتر است از این پس توضیحات را همراه با کدنویسی دنبال کنیم. (کلیه کدهای Server Side به زبان VB.NET نوشته شده است) سه گام اساسی برای این کار وجود دارد:

1- ساختن Template مورد نظر شما جهت ارسال Email:
برای این کار کافی است که Template مورد نظر خود را به فرمت HTML طراحی کنید. این به خود شما بستگی دارد که کدهای HTML را به صورت دستی بنویسید و یا از ادیتورهای WYSIWYG مانند FrontPage یا Dreamweaver یا !GoLive استفاده کنید. تنها تفاوتی که در اینجا وجود دارد این است که شما بایستی قسمتهایی از متن نامه خود را که متغیر هستند (مانند نام گیرنده Email، آدرس پست الکترونیکی وی و ...) را به گونه ای از بقیه قسمتها متمایز کنید. برای مثال اگر شما می خواهید در ابتدای نامه، دریافت کننده نامه را با نام خود مورد خطاب قرار دهید عبارت را به صورت زیر وارد کنید: "سلام "#NAME# لطفا توجه کنید که هیچ محدودیتی در تکنیک به کار رفته وجود ندارد و قرار دادن کاراکترهای ## فقط جهت متمایز ساختن این قسمت از محتوای استاتیک صفحه است و شما می توانید به صور دیگر آن را مشخص کنید مثلا ?NAME? یا هر چیز مشابه دیگر. این قسمت بعدا با نام شخص مورد نظر ما جایگزین می شود. نکته قابل ذکر دیگر اینکه چنانچه قصد دارید نامه خود را فارسی ارسال کنید تگ زیر را فراموش نکنید:
< meta http-equiv = " Content-Type " content = " text / html; charset = utf-8 " >
2- خواندن فایل Template جهت قراردادن در Body نامه شما:
پس از اینکه Template را آماده نمودید بایستی این فایل را بخوانید، قسمتهای مورد نظر (متمایز شده با ##) را با عبارات مورد نظر خود (که می توانید از Database استخراج کنید) جایگزین کنید و این متن را به صورت یک متغیر رشته ای در Body نامه خود قرار دهید (گام 3). این کار به وسیله کد زیر صورت می پذیرد: (قبل از هر چیز شما بایستی Namespace مورد نیاز که در اینجا System.IO می باشد را Import کنید)
Imports System.IO

Dim reader As StreamReader
Dim strFileName As String = Server.MapPath( " templatel.htm " )
Dim strFileT ext

reader = File.OpenText( strFileName )

While reader.Peek < > -1
strFileText + = reader.ReadLine( )
End While

reader.Close()
strFileText = Replace( strFileText, "#Username#", Name.Text)
strFileText = Replace(strFileText, "#MsgID#", Request("MsgID" ))
strFileText = Replace(strFileText, "#AuthorID#", Request("AuthorID" ))
حال بیایید نگاهی به کد فوق بیاندازیم: در سطر اول شما یک شی از نوع StreamReader که جهت خواندن فایلهای متنی به کار می رود را می سازید و در سطر بعدی مسیر فیزیکی فایل Template خود را در متغیر رشته‌ای strFileName ذخیره می کنید.

نکته: در صورتیکه بخواهید در فایل کلاس خود از کد فوق استفاده کنید بایستی مسیر فیزیکی فایل را با استفاده از System.Web.HttpContext.Current.Server.MapPath("template.htm") به دست آورید. اما در Code Behind یک WebForm همان Server.MapPath() کافی است.

سپس در سطر بعدی ما با استفاده از متد OpenText فایل مورد نظر را باز کرده و متن آن را در Reader قرار می دهیم. حال در یک حلقه While...End While سطر به سطر فایل Template را (که در اینجا کدهای HTML ما هستند) می خوانیم و در متغیر strFileText ذخیره می کنیم. Reader.Peek <> -1 بررسی می کند که آیا به انتهای فایل رسیده ایم یا خیر. پس از اینکه کل فایل را خوانده و در متغیر ذخیره کردیم. شی reader را می بندیم.

در اینجا شما باید Template نامه خود را برای کاربر خاص Customize کنید. یعنی عبارات محصور شده با ## را با اطلاعات کاربر (که از بانک اطلاعاتی استخراج می شود و یا از یک Query String دریافت می شود) جایگزین کنید. در مثال بالا مقدار اول در Template با مقدار یک Textbox و دو مورد بعدی با Query String های انتهای یک URL جایگزین می شود.

حاصل کار یک متغیر رشته ای به نام strFileText است که حاوی کد HTML مورد نیاز شما برای ارسال یک HTML Email می باشد. که مثلا عبارت ابتدای آن به صورت زیر در آمده است: "سلام مهدی"

3- استفاده از قالب Import شده فوق و ارسال Email:
حال به آسانی Email را ساخته و ارسال می کنیم. بدین ترتیب: (Imports System.Web.Mail را فراموش نکنید!)


'Creating and sending mail to user
Dim objMail As New MailMessage()
objMail.From = "[email protected]"
objMail.To = Email.Text.Trim
objMail.Subject = "YOUR SUBJECT GOES HERE..."
objMail.BodyFormat = MailFormat.Html
objMail.BodyEncoding = System.Text.Encoding.UTF8
objMail.Body = strFileText
SmtpMail.SmtpServer = "smtp.YOURSERVER.com"
SmtpMail.Send(objMail)
این قسمت نیاز به توضیخ چندانی ندارد. جز اینکه objMail.To را بایستی به صورت داینامیک (از DB و ...) تغییر دهید (در اینجا مقدار از یک Textbox دریافت شده است)، SMTP Server خود را مشخص کنید و Email را ارسال کنید! به همین سادگی. بقیه موارد بسیار واضح هستند.

لطفا به این نکته توجه کنید که برخی SMTP Serverهایی که نیاز به Authentication دارند را نمی توان برای این منظور (ارسال Email به آدرس های خارج از SMTP Server فوق) مورد استفاده قرار داد. در این خصوص لطفا به Administrator سرور خود رجوع کنید.


منبع: IRITN
 
آخرین ویرایش:

fereshte22

Member
سلام
من دنبال خبرنامه ای هستم که ارسال ایمیل را از روی سرور انجام دهد و برای ارسال ایمیل احتیاج نباشد که به اینترنت وصل باشیم.در ضمن میلها به inbox فرستاده شود و به صورت spam شناخته نشود.
ایا چیزهای که دوستان معرفی کردند این خصوصیات رادارد؟
 

amirlol

Well-Known Member
خوب مهدی جان باید بگردی دنبالش تئ سایت hotscript
دوست من fereshte22 شما هم اگه از قوانین استاندارد استفاده کنید spam «می شه !
برای اجرای خود ب خود از روی سیستم هم میشه ابتکاری کار کرد !!

چون سرور های ویندوز مثل لینوکس نیستش که مثلآ راس یه تایم خواصی یه فایل رو تو خود سرور اجراش کنیم
 

fereshte22

Member
دوست من fereshte22 شما هم اگه از قوانین استاندارد استفاده کنید spam «می شه !
برای اجرای خود ب خود از روی سیستم هم میشه ابتکاری کار کرد !!

چون سرور های ویندوز مثل لینوکس نیستش که مثلآ راس یه تایم خواصی یه فایل رو تو خود سرور اجراش کنیم

سلام
میشه یه کم بیشتر توضیح بدهید؟یعنی چه طوری؟
برنامه اماده واسه این کار سراغ ندارید؟
 

amirlol

Well-Known Member
ببینید یه طرح سادس !!! معمولآ یه ابتکار باید بخرج داد !!
مثلآ اولین بار که تو روز یه صفحه باز شد بیاد و یه صفحه دیگه رو اجرا کنه !!!
و تو اون پیچ بیاد ایمیل ها رو بخونه و بفرسته !!!! ((مثل خبرنامه هفتگی ))
 

amirlol

Well-Known Member
بجر webwis اگه طرح دیگه ای بخوای باید سفارش ساختش رو بدین


** بخدا این سایت محل در آوردن کامل سرس ها نیست

محل حل مشکلاته
 
  • Like
Reactions: MDP
سلام
من هم با وب ويز مشكل دارم و مشكل ام اين است كه اكثر Isp هاي ايران اجازه استفاده از وب ويز را به دليل ارسال ايم ميل به تعداد زياد نمي دهند. مي خواستم بسته نرم افزاري ديگري - كه ناشناخته - هست را استفاده كنم.
به هر حال از راهنماييت ممنونم
 

amirlol

Well-Known Member
دوست من ربطی به وب ویز نداره

هیچ سرور ای چنین اجازه ای رو نمی ده و جز قرار داد ذکر می کنه
چون همه باعث میشه Ip سرور به صورت بالک بشه
و همچنین بار سنگینی به سرور وارد میشه
ولی میشه کلک زد و این کارو کرد که هم نفهمند و هم.....
 

amirlol

Well-Known Member
خوب بیاید بیای تک تک ایمیل رو بفرستی تو لوپ!!!
یکی از کاراش اینه !!
 

جدیدترین ارسال ها

بالا