چگونه از طریق SQL Server ایمیل ارسال کنیم؟ [قسمت اول]

چگونه از طریق SQL Server ایمیل ارسال کنیم؟ [قسمت اول]

نوشته شده توسط: مهران رحمتی
تاریخ انتشار: ۰۱ شهریور ۱۳۹۴
آخرین بروزرسانی: 28 بهمن 1403
زمان مطالعه: 7 دقیقه
۵
(۱)

ارسال ایمیل با SQL، در قسمت اول این مقاله پیکربندی و ارسال گزارش و پیامها از طریق سرویس ایمیل در SQL Server را بررسی خواهیم کرد. این روش برای ارسال ایمیل از موتور بانک اطلاعاتی SQL Server به سرویس دهنده های SMTP می باشد. برنامه های کاربردی تحت بانک اطلاعاتی SQL Server میتوانند با ارسال اطلاعات توسط Database Email با کابران ارتباط برقرار نمایند. این موضوع ویژگی هایی همانند مقیاس پذیری (scalability)، امنیت (security)، و اطیمنان پذیری (Reliability) را در خود ارایه کرده است. 

ارسال ایمیل با SQL

Database Email از سرویس SMTP برای ارسال ایمیل استفاده میکند SQLSERVER 2000 هم از سرویس پست الکترونیک استفاده میکرد البته بجای SMTP از MAPI بهره میبرد. Database Email در SQL نیاز به سرویس سازگاز با MAPI (Microsoft Exchange Server) و سرویس گیرنده (Microsoft Outlook) دارد. ما میتوانیم از این سرویس برای ارسال متن ، نتایج یه پرس و جو (query) وفایل های ضمیمه (file attachment) استفاده کنیم. از این سرویس میتوان برای اطلاع رسانی به مدیران استفاده کرد که بتوانند وقایع و رویدادهایی که ارتباط به SQL SERVER دارند را بخوانند. به عنوان مثال می توان اشکالاتی که در انجام فرآیندهایی replication و یا mirroring که بطور خودکار انجام میشود و یا اینکه تاخیر زمانی در اجرای آنها وجود دارد را به مدیران پایگاه داده (DBA) اطلاع رسانی کرد.


مشاهده کامل‌ترین و بروزترین آموزش sql server در نیک آموز


نکاتی که باید بخاطر داشته باشیم

۱- پست الکترونیک بانک اطلاعاتی نیاز به سازگاری با MAPI همانند OutlookExpress و یارابط (interface) برنامه نویسی ندارند.
۲- عملکرد بهتر. تاثیر ارسال پست الکترونیک به سرویس دهنده SMTP به SQL Server کاهش پیدا کرده است زیرا این وظیفه توسط یک فرآیند (process) خارجی و مجزا که در واقع فایلی به نام DatabaseMail.exe است انجام می پذیرد.
۳- این سرویس در محیط مبنای کلاستر (cluster-based environment.) به خوبی کار میکند.
۴ – 64bit راپشتیبانی میکند.
۵ – اطلاعات مربوط به پیکربندی پست الکترونیک در بانک اطلاعاتی MSDB ذخیره می گردد.
۶- فقط اعضای متعلق به نقشهای (Rols)SysAdmin و DatabaseMailUserRole از بانک اطلاعاتی MSDB میتوانند بطور پیش فرض ایمیل ارسال کنند.
۷ – اجازه ارسال پیامها را در غالب متفاوت همانند HTML و متن که را میدهد.

اجزای اصلی پست الکترونیک پایگاه داده عبارتند از

۱- Sp_Send_dbmail : این یک روال ذخیره شده (برنامه stored procedure) میباشد که SQL SERVER از آن برای ارسال پست الکترونیک پایگاه داده استفاده میکند. این روال ذخیره شده درپایگاه داده MSDB وجود دارد.
۲MSDB DataBase : شامل همه روال ذخیره شده ،جداول سیستمی ، نقش های (Rols) وابسته بهDatabase Email پایگاه داده می باشد.
۳Service Broker: برای ایجاد ارتباط بین موتور SQL SERVER و موتور پست الکترونیکی پایگاه داده ما نیاز به این سرویس داریم ، در واقع Service Broker پیامها را به موتور Database Email تحویل میدهد.
۴- DatabaseMail.exe :این فایل در پوشه Binn درنمونه (Instance) نصب شده در مسیر نصب شده SQL Server می باشد . این فایل درواقع همان موتور DatabaseEmail پایگاه داده میباشد.

این فرآیند چگونه کار میکند؟

وقتی به هر دلیل یک خطای زمان اجرا اتفاق می افتد ،مثلاهنگام اجرای فرآیندی که بطور خودکار مانند پشتیبان گیری(Backup) یا تکثیر داده ها (Replicate) صورت می پذیرد ، اطلاعات مربوط به خطای رخ داده به موتور پست الکترونیک بانک اطلاعاتی ارجاع داده میشود و سپس موتور پست الکترونیکی (database mail engine) آن را به سرویس دهنده SMTP که نام کاربری و کلمه عبور آن در پروفایل ایجاد شده تحویل میدهد و سرانجام سرویسدهنده MSTP انرابه دریافت کنندگان ارسال میکند.

Error –> DB Engine –> DBMail Engine –> SMTP Server –> Recipients

بخاطر دارید که گفتیم یکی از اجزای مهم برای ارسال ایمیل Service Broker است حالا چگونه میتوانیم آن را فعال کنیم؟

USE [master]
GO
ALTER DATABASE [MSDB] SET ENABLE_BROKER WITH NO_WAIT
GO
به خاطر داشته باشید که جداول موجود در بانک اطلاعاتی MSDB با پایگاه داده پست الکترونیکی (ِDatabase Mail) ارتباط دارد ، لذا جداول مهم در این زمینه عبارت است از :

۱- Sysmail_Profile :شامل همه اطلاعات مربوط به پروفایلهای ایجاد شده است.
۲- Sysmail_account: شامل اطلاعات کلیه سرویس دهنده های SMTP است.
۳- Sysmail_server: شامل جزییات سرویس دهنده های SMTP است.
۴- Sysmail_allitems: وضعیت ارسال ایمیل را نشان میدهد . اگرفیلد send_status=1 باشد بمعنای ارسال موفقیت آمیز ایمیل است در غیر اینصورت دلیل وجود خطا می باشد.
۵- Sysmail_log: کنترل خطاهایی که بوسیله حالتهای پست الکترونیک (DatabaseMail)بوجود آمده اند.
۶- Sysmail_configuration : شامل جزییات پارامترهای سیستم است (که در واقع هنگام تعریف پروفایل در صفحات Wizard تنظیم (SET)میکنید)

مراحل پیکربندی

در این بخش از مقاله مراحل پیکربندی ارسال ایمیل با SQL را برای شما علاقه مندان پایگاه داده با استفاده از کوئری بیان می کنیم. افراد علاقه‌مند می‌توانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئری‌نویسی گسترش دهند.

۱- فعال کردن ایمیل در سطح سرور
sp_configure 'Database Mail XPs',1
reconfigure

۲- فعال کردن Service broker درپایگاه داده MSDB

USE [master]
GO
ALTER DATABASE [MSDB] SET ENABLE_BROKER WITH NO_WAIT
GO

۳- پیکربندی پروفایل ایمیل (پروفایل مجموعه ای از حساب هایی است که توسط کاربران ایجاد شده است)

۴- اضافه کردن حساب SMTP

۵- ایجاد پروفایل خصوصی (Private)با عمومی (Public)

تذکر : پروفایل خصوصی (private)بوسیله اعضای زیر مورد استفاده قرار میگیرد

· sysadmin members and

· databasemailuserrole members of MSDB

۶- تنظیم پارامترها
۷- ارسال ایمیل

مثال: پیکربندی Database Mail

برای انجام این مثال به قسمت Management بروید و روی آیتم DataBase Mail کلیک راست کنید و از منوی ظاهر شده قسمت DataBaseMail Configure را انتخاب کنید. از پنجره خوش آمد گویی روی دکمه Next کلیک کنید تا به صفحه DatabaseMail Configure Wizard وارد شوید . در قسمت گزینه اول SetupDataBase Mail by Performance the folloming Task را انتخاب کنید ودکمه Next را بزنید. در این قسمت Profile Name = “sql Profile”قرار دهید و شرحی برای آن وارد نمایید و سپس روی دکمه Add کلیک نمایید تا صفحه زیر نمایان گردد در قسمت Email address آدرس ایمیل خود را وارد کنید . که البته غالبا از ID شرکتی برای این موضوع استفاده میکنند.
در قسمت Server name: اسم سرویس دهنده SMTPخود را وارد کنید مثلا برای گوگل (smtp.gmail.com) (اطلاعات این قسمت از اطلاعات سرویس دهنده آن دریافت کنید.) در قسمت port number شماره پورت مورد نظر را وارد کنید بعنوان مثال ۵۸۷. گزینه SSLرا فعال کنید و اگر از ایمیل شخصی خودتان استفاده میکنید گزینه Basic Authentication رافعال کنید. ایمیل و کلمه عبور آنرا خود را وارد کنید، سپس دکمه Ok را بزنید و به صفحه بعد بروید.
در زیر گزینه Manage Profile Security مطمئن شوید که گزینه Public تیک خورده باشد و گزینه مقابل آن DefultProfile=Yes را فعال کرده باشید سپس بعد از زدن دکمه Next به صفحه پارامترهای مربوط به پروفایل ایجاد شده خواهید رفت . لازم است در مورد این صفحه عرض کنم که میتواند در این پنچره تنظیمات مربوط به فایلهایی که میخواهید SQL موقع Attach کردن آنها را در لیست سیاه خود قرار دهد را تعیین کنید ، مثلا درگزینهProhibited Attachment FileExtensions بطور پیش فرض فایلهایی با پسوند Exe,dll,vbs,js در لیست سیاه قرار گرفته اند ، حال میتوانید از گزینه مقابل ان استفاده کرده و فایلهایی با پسوند دلخواه را در لیست سیاه به SQL Server معرفی کنید. سپس دکمه Next و Finish رابزنید تا کار پیکربندی ایمیل سرور فعال شود. شما می‌توانید کوئری نویسی را به صورت گام‌به‌گام از نیک آموز فرا بگیرید. 

سخن پایانی

Use msdb
Go
--فهرست پروفایلهای ایجاد شده
SELECT * from sysmail_profile
--فهرست اکانت های ایجاد شده
SELECT * from sysmail_account
-- کنترل کردن اکانت مورد نظر
SELECT * from sysmail_profileaccount where profile_id= ?
--نمایش جزییات ایمیل سرور
SELECT * from sysmail_server

ارسال ایمیل با SQL، حال برای تست ارسال یک ایمیل گزینه SendTest E-Mailرا از DabaseMail انتخاب کنید. حال دکمه Send Test E-Mail رابزنید و ایمیل ارسال شده را چک کنید. برای اطمینان از اینکه ایمیل ارسال شده یا نه از دستور زیر استفاده کنید و به فیلد Send_Status را ملاحظه کنید.

SELECT * FROM sysmail_allitems

اگر Send_Status =Send بود بعمنای ارسال موفقیت آمیز ایمیل است و گزینه failed به معنای عدم موفقیت. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
title sign
دیدگاه کاربران

    •  سلام

      مقاله شما بسیار هم عالی بود، چرا که در این مبحث مقاله ی شما نسبت به سایر مقاله هایی که بنده در این خصوص مطالعه کرده بودم از روانی، سادگی و رسایی خوبی برخوردار هست و مطالعه جزئیات آن واقعاً به دله خواننده می نشینه.
      انشا… چنانچه بعد از قسمت دوم این مقاله، در خصوص ارسال SMS با استفاده از Service Broker و در کل استفاده هایی که میشه از این سرویس اسکوئل انجام داد رو به همین سادگی و شیوایی بصورت مقاله ارائه دهید، مطمئناً توجه کاربران و بازدید کنندگان زیادی را بخود جلب خواهد کرد.
      با تشکر از شما.
      •  سلام ، از لطف جنابعالی و سایر دوستان سپاسگذارم.

    • مهندس جان خسته نباشی
      مقاله عالی بود. باشد از این مقاله ها تا از تجربه شما هم ما استفاده کنیم

  • 1
  • 2

دانلود رایگان: آموزش SQL Server

هر روز یک ویدئو آموزشی رایگان برای شما ایمیل خواهد شد!

پاپ آپ | SQL Server

  • این قسمت برای اهداف اعتبارسنجی است و باید بدون تغییر باقی بماند.