campaign-edianeh-98

آموزش ارسال ایمیل با فایل ضمیمه در ASP.NET



visibility  
mode_comment   ۲۷

دوستان سلام،قبلا توی سایت مطالبی درباره آموزش نحوه ارسال ایمیل با PHP قرار داده شده بود اما در ASP.NET این کار انجام نشده بود،به خاطر مهم بودن این مبحث توی طراحی وب سایت میخوام توی این مطلب شما رو با نحوه ارسال ایمیل در ASP که بتونیم فایل ضمیمه هم بهش الصاق کنیم رو آموزش بدمریالپس با ما همراه باشید.

برای ارسال ایمیل در ASP.NET ما اول از همه باید فضای های نام مورد نظر رو برای استفاده از کلاس های مربوطه فراخوانی کنیم.

System.Net.Mail

این فضای نام تمام کلاس های لازم برای ارسال ایمیل رو در اختیار ما قرار میده،پس همون بالای صفحه جدید که ایجد می کنید این فضای نام رو با دستور زیر اضافه کنید.

خوب برای مرحله بعد لازمه که از کلاس MailMessage که کلاس اصلی کار ما هست یه نمونه بسازیم و خاصیت های لازم رو تنظیم کنیم.

خوب حالا توی اون دکمه ای که ایمیل رو برای ما ارسال میکنه این کد ها رو قرار میدیم.

من یه سری تکست باکس روی فرم قرار دادم واز اونا برای دریافت مشخصات ایمیل ارسالی استفاده کردم،توی خط اول خاصیت To رو مقدار دهی کردیم که قراره ایمیل به چه کسی ارسال بشه (من مقدار تکست باکسی با نام txtto رو براش تنظیم کردم)،توی خط بعدی هم خاصیت From که مشخص میکنه ایمیل از طرف چه کسی ارسال میشه رو مشخص کردیم،توی خطر بعدی موشوع ایمیل و خط بعدش هم متن و محتوای ایمیل رو با استفاده از همون کنترل های خود ASP دریافت کردیم.برای ارسال ایمیل هایی با نوع محتوای HTML حتما باید اون گزینه IsBodyHtml رو برابر true قرار بدید.

اضافه کردن فایل ضمیمه

خوب برای اضافه کردن فایل ضمیمه، اول از همه یک کنترل FileUpload به صفحه اضافه میکنیم (من اینجا اسمشو گذاشتم uploader) و این کد رو براش می نویسیم.

با یه شرط چک می کنیم ببینیم فایلی ارسال شده یا نه،اگه جواب مثبت بود،میریم سراغ کد بعدی،خوب اسم فایل ارسالی رو دریافت کردیم،با Server.MapPath مسیر فیزیکی ریشه سایت رو مشخص کردیم و آدرس رو تعیین کردیم،حالا فایل رو توی همون ادرس ذخیره میکنیم.

با استفاده از کلاس Attachment می تونیم به ایمیل فایل ضمیمه کنیم،خوب از این کلاس یه نمونه می سازیم و آدرسی رو که ساختیم به عنوان پارامتر براش میفرستیم،برای انتقال فایل لازمه محتوای فایل اینکد بشه بنابر این خاصیت transferEncoding شی attach رو با مقدار مناسبش مقدار دهی کردیم(باید Base64 باشه که از همون کلاس و فضای نام Net و کلاس Mime قابل دسترسیه) خوب بعدشم با استفاده از متد Add فایل attach رو به شی email خودمون اضافه میکنیم.(یادتون باشه اگه این ارسال ایمیل در دسترس کاربران قرار داره حتما فایل رو اعتبار سنجی کنید)

برای ارسال ایمیل توی سرویس smtp می تونیم از کلاس SmtpClient دات نت استفاده کنیم که کار باهاش خیلی راحته،خوب پس یه نمونه ازش میسازیم.

خوب حالا خاصیت های این شی رو تنظیم و در نهایت ایمیل رو ارسال میکنیم.

اول از همه هاست رو تنظیم کردیم و در خط بعدی هم نام کاربری و کلمه عبور سرویس ایمیل رو تنظیم کردیم و در نهایت هم ایمیل رو ارسال کردیم،من توی کد ها یه label هم قرار دادم که پیغام های ارسال موفق و خطاها رو چاپ میکنه که این جا توی کد اموزش قرارش ندادم.(هاست، نام کاربری و کلمه عبور رو میتونید از پشتیبانی یا بخش تنظیمات هاست خودتون دریافت کنید)

اینم از کد کامل این آموزش :

دانلود فایل های ASP.NET

کد های کامل HTML و ASP.NET توی فایل ضمیمه موجود هستن.

امیدوارم براتون مفید باشه.

متخصص PHP
اگر دوست داری برنامه نویسی PHP رو حرفه ای یاد بگیری آیا می دانید بیش از ۸۰% وب سایت های موجود در ایران از جمله لیدرهای بازار وب (اسنپ، اسنپ فود، نت برگ، دیجیکالا، الوپیک و ... ) زبان برنامه نویسی PHP را به عنوان زبان اصلی برای پیاده سازی امکانات سمت سرور خود انتخاب کردند! متخصص PHP arrow_back
comment دیدگاه کاربران
elham.e

ممنون از آموزشتون
این امکان وجود داره روی لوکال هاست اینو چک کرد؟یا باید از VMvare و ماشین های مجازی و … استفاده کرد؟
و اینکه دیه نیاز به نوشتن

نیست؟
نی

کیوان علی محمدی

بله امکان تست روی لوکال هم وجود داره،شما فقط نیاز به یک سرویس smtp دارید،می تونید برای تست از Gmail استفاده کنید،کلاس smtpclient هم دارای سازنده ای با 3 overload هست که یک حالت توی آموزش استفاده شده،یکی همین که شما نوشتین و یکی دیگه که علاوه بر هاست پورت رو هم دریافت میکنه.موفق باشید

elham.e

یه سوال دیگم داشتم این دقیقا یعنی چی؟


و من اگه اینجوری بنویسم اشتباس؟

کیوان علی محمدی

سلام،سوال اول : اون اعتبار نامه رو تعریف میکنه (منظور همون اعتبار سنجی با نام کاربری و کلمه عبور،برای متصل شدن به SMTP مورد نیازه).
سوال دوم:کلاس MailMessage دارای سازنده ای با 4 overload هست که این حالت شما هم یی از اونهاست و مشکلی نداره،می تونید از همین استفاده کنید.

elham.e

خیلی ممنون 🙂
فقط حیف که توی فایل pdf کدها نمایش داده نمیشن 😥

elham.e

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

کیوان علی محمدی

به خاطر اینکه خود Mime در اینجا یک فضای نام هستش و ما صرفا به خاطر استفاده از enum موجود در این فضای نام برای استفاده از TreansferEncoding لازم نیست این فضای نام رو اضافه کنیم،پس به همین خاطر به صورت مستقیم و Full Address ازش استفاده کردیم.

mehran90

ارسال ایمیل با php رو کجا آموزش دادین من پیدا نکردم؟!

کیوان علی محمدی

سلام این مطلب رو بخونید.

mehran90

سلام چه طوری میشه asp رو تو ugig فعال کرد؟

کیوان علی محمدی

سلام باید ببینید این سایت چه سرویسی رو ارائه میکنه،اگه هاست ویندوز ارئه میکنه نیازی به فعال سازی ASP نیست،اگرم لینوکسی یا چیز دیگه ای باشه دیگه نمیشه ASP رو روش اجرا کرد.

mehran90

ممنون
تو xammp server چی؟
از asp پشتیبانی نمیشه؟

کیوان علی محمدی

نه متاسفانه پشتیبانی نمیشه،شما اگه یه نسخه از Visual Studio نصب کنی هیچ نیازی به نصب سرور جداگانه مثل IIS نداری،خود ASP.NET یه سرور داخلی داره که به راحتی نتیجه کد ها رو برای شما نشون میده مثل یه سرور واقعی.ولی برای کد های PHP و تست روی لوکال نیاز به xammp یا Wamp هست.

axarsu

با عرض سلام خدمت مدیر سایت و کاربران گرامی
یک سری فیلم آموزشی به زبان فارسی در رابطه با HTML5 و CSS3 تهیه کردم که توی آدرس زیر به صورت رایگان موجوده
www.azad-dl.com
از مدیر محترم سایت خواهشمندم که در صورت تمایل این فیلم ها را در اختیار کاربران سایت خود نیز قرار دهند
با تشکر

مریم

این کدی که شما گذاشتید عکس ر هم پشتیبانی میکنه یعنی میشه عکس رو هم با ایمیل فرستاد؟
با تشکر.

کیوان علی محمدی

سلام بله میشه.

حسن

سلام
من در پروزه ام قراره کاربر بتونه کارتی رو انتخاب و در همان صفحه دکمه ای بذارم که با کلیک کردن بر روی ان دکمه بتواند کارت تبریک را که به شکل عکس هست و چند خطی را به همراه عکس بفرستد آیا این امکان وجود دارد

کیوان علی محمدی

خوب شما کارت هارو در همون صفحه به کاربر نشون بدید و بعدش برای هر کدوم مثلا یه چک باکس بذارید کاربر هر کدوم رو انتخاب کرد و دکمه ارسال رو انتخاب کرد شما مقدار چک باکس (آدرس تصویر یا آیدی تصویر) رو دریافت کنید و با استفاده از اون محل تصویر رو روی سرور مشخص کنید و با استفاده از این کد به ایمیل ضمیمه کنید و ارسال کنید.برای متن نامه هم همون قسمت body جواب میده.

رضا

سلام دوست عزیز
تو قسمت نام هاست من هم mail.yahoo.com neveshtam و هم yahoo.com و آیدی و پسوردم رو هم وارد کردم
جواب نگرفتم

کیوان علی محمدی

سلام برای استفاده از سرویس های عمومی باید تنظیمات دقیقتری صورت بگیره،مثلا سرویس های ایمیل عمومی شماره پورت به دلیل استفاده از پروتکل امن فرق میکنه.

nima

من میخواهم با لوکال هاست امتحان کنم میشه یه راهنمایی بدید که به ترتیب باید چکار کنم؟؟؟
ممنون…

کیوان علی محمدی

سلام، باید آدرس SMTP سرویس یاهو رو گیر بیارید و با اون تنظیمش کنید.

saman

سلام
من همین کد رو برا سایتم تو قسمت تماس با ما برای ارسال ایمیل گذاشتم،الان باید برای قسمتی که هاست رو میخاد چی بذارم؟
client.Host = “mail host=mail.yourdomain.com”; چی قرار بدم؟

و همچنین این قسمت رو چه مقادیری بذارم؟
client.Credentials = new System.Net.NetworkCredential(“email username=info@yourdomain.com”, “email passowrd”);

کیوان علی محمدی

قسمت اول مربوط به آدرس میل سرور و قسمت دوم هم مربوط به نام کاربری و کلمه عبور میل سرور هستش.

saman

خب از کجا باید اینارو پیدا کنم بذارم؟
یعنی چی میل سرور؟

وحید صالحی

گوگل کنید مثلا آدرس میل سرور یاهو یا گوگل و…

اکبر قره باغی

بسیار بسیار ممنون.
عالی بود 🙂

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :