مقدمة
يمكن تفعيل هذه الميزة لإرسال إشعارات تنبيه عبر البريد الإلكتروني، كإرسال فاتورة للعميل تلقائياً، عند إضافة فاتورة مبيعات تخصه، حيث تم استعراض هذا المثال في هذا الفيديو:
متطلبات تفعيل الخدمة
- يجب أن تخصص حساب Gmail لهذه الخدمة.
- يجب تسجيل الدخول إلى حساب Gmail الجديد ثم فتح الرابط التالي:
https://myaccount.google.com/lesssecureapps
ثم تفعيل خيار: “Allow less secure apps” – السماح بالتطبيقات الأقل أماناً. - يجب تنفيذ أكواد SQL التالية عبر برنامج مساعد مثل SQL Server Management Studio حيث يمكن تحميله مجاناً عبر هذا الرابط: https://aka.ms/ssmsfullsetup
الخطوة الأولى
- افتح استعلام SQL جديد في SQL Server Management Studio
- نفذ هذا الاستعلام:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Database Mail XPs', 1;
GO
RECONFIGURE
GO
الخطوة الثانية
1. نفذ هذا الاستعلام بعد تغيير قيم المتغيرات لـ @email_address , @username , @password
execute msdb.dbo.sysmail_add_account_sp
@account_name = 'XtraMail',
@description = 'send email using SQL',
@email_address = 'YourEmail@gmail.com',
@display_name = 'XtraMail',
@username = 'Youremail@gmail.com',
@password='xxxxxxxxxx',
@mailserver_name = 'smtp.gmail.com',
@port = '587',
@enable_ssl = 1
2. نفذ هذه الاستعلام:
execute msdb.dbo.sysmail_add_profile_sp
@profile_name = 'XtraMail',
@description = 'profile used to send email'
3. نفذ هذا الاستعلام:
execute msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'XtraMail',
@account_name = 'XtraMail',
@sequence_number = 1
4. نفذ هذا الاستعلام:
execute msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'XtraMail',
@principal_name = 'public',
@is_default = 1
الخطوة الثالثة: إرسال رسالة تجربة
1. نفذ هذا الاستعلام بعد تعديل عنوان الإيميل الموجود في @recipients وضع مكانه عنوان الإيميل الذي ستجرب الإرسال له:
exec msdb.dbo.sp_send_dbmail @profile_name = 'XtraMail',
@recipients = 'test@test.com',
@subject = 'Test Message',
@body='Xtra Email Service Test Success',
@body_format = 'HTML';
2. إذا لم تنجح تجربة إرسال الإيميل التجربة، يمكن حذف الإعدادات بتنفيذ الاستعلام التالي، ثم إعادة تنفيذ الاستعلامات الموجودة في الخطوة الثانية:
EXECUTE msdb.dbo.sysmail_delete_account_sp
@account_name = 'XtraMail'
EXECUTE msdb.dbo.sysmail_delete_profile_sp
@profile_name = 'XtraMail';
الخطوة الرابعة: إنشاء إجراءات SQL
1. نفذ هذه الاستعلام:
create procedure [dbo].[Email] (@profile nvarchar(max) , @recerver nvarchar(max) , @subject nvarchar(max) , @boday
nvarchar(max))
as begin
exec msdb.dbo.sp_send_dbmail @profile_name = @profile,
@recipients = @recerver ,
@subject = @subject,
@body = @boday ,
@body_format = 'HTML'
End
2. نفذ هذا الاستعلام:
create procedure [dbo].[AutoEmailing] ( @22guide uniqueidentifier)
as begin
Declare @a nvarchar(Max)
Set @a = 'XtraMail'
Declare @mail nvarchar(Max)
Set @mail = (Select email From tbl016 Where CardGuide =
(Select tbl022.AgentGuide From tbl022 Where CardGuide = @22guide))
Declare @supject nvarchar(Max)
Set @supject = (Select AgentName
From tbl016 Where CardGuide =
(Select tbl022.AgentGuide From tbl022 Where CardGuide = @22guide))
declare @agentGuide uniqueidentifier
set @agentGuide = (select tbl022.AgentGuide from tbl022 where CardGuide = @22guide)
declare @countrow nvarchar(max)
set @countrow = (select count(*) from qry101 where qry101.InvoiceGuide = @22guide)
declare @sumQuan nvarchar(max)
set @sumQuan = (select sum(qry101.Quantity) from qry101 where InvoiceGuide = @22guide)
declare @TotalTax nvarchar(max)
set @TotalTax = (select sum(qry101.TaxValue) from qry101 where InvoiceGuide = @22guide)
declare @blaanceFloat float
set @blaanceFloat = isnull((select sum(tbl012.Debit - tbl012.Credit) from tbl012 where AccountGuide =
(select tbl016.AccountID from TBL016 where CardGuide = @agentGuide)),0)
declare @balanceAgent nvarchar(max)
set @balanceAgent = @blaanceFloat
declare @billkind nvarchar (max)
set @billkind = (select top 1 qry101.InvoiceName from qry101 where InvoiceGuide = @22guide)
declare @discount float
set @discount = (select sum(qry101.ItemDiscountValueRate) from qry101 where InvoiceGuide = @22guide)
declare @tax float
set @tax = (select sum(Qry101.ItemTaxValueRate) from qry101 where InvoiceGuide = @22guide)
declare @invoiceValuefloat float
set @invoiceValuefloat = (select ((select (select sum(qry101.ItemTotalValue) from Qry101 where InvoiceGuide = @22guide) - @discount) + @tax))
declare @invoiceValue nvarchar (max)
set @invoiceValue = @invoiceValuefloat
declare @finalDebitfloat float
set @finalDebitfloat = @invoiceValuefloat + @blaanceFloat
declare @finalDebitAgnt nvarchar(max)
set @finalDebitAgnt = @finalDebitfloat
declare @billdate date
set @billdate = (select top 1 qry101.BillDate from qry101 where InvoiceGuide = @22guide)
declare @curency nvarchar(max)
set @curency = (select top 1 qry101.CurrencyName from qry101 where InvoiceGuide = @22guide)
declare @fullSupject nvarchar(max)
set @fullSupject = N'السيد ' + @supject + N' المحترم '
declare @paymethod int
set @paymethod = (select tbl022.PayMethod from tbl022 where CardGuide = @22guide)
Declare @body nvarchar(Max)
if @paymethod = 2 begin
Set @body = N''+
+ '
'+
N'عزيزنا العميل يسعدنا خدمتك و نود إعلامك بانه تم إضافة فاتورة نوع '+@billkind+'
'
+ N'بتاريخ ' +
' ' + convert(nvarchar(max),@billdate)+'
' +
N'بالتفاصيل التالية'+'
' +
N'مجموع صافي الفاتورة' + ' ' +
@invoiceValue + ' ' + @curency + '
'
+ N'مجموع أقلام الفاتورة' +' '+ @countrow + '
' +
+ N'مجموع كميات الفاتورة' + ' ' + @sumQuan + '
'+
N'الضريبة' + ' ' + @TotalTax +'
'
+ N'و رصيدكم الحالي لدينا هو '+' ' + @finalDebitAgnt +'
'
end
if @paymethod = 1 begin
Set @body = N''+
+ '
'+
N'عزيزنا العميل يسعدنا خدمتك و نود إعلامك بانه تم إضافة فاتورة نوع '+@billkind+'
'
+ N'بتاريخ ' +
' ' + convert(nvarchar(max),@billdate)+'
' +
N'بالتفاصيل التالية'+'
' +
N'مجموع صافي الفاتورة' + ' ' +
@invoiceValue + ' ' + @curency + '
'
+ N'مجموع أقلام الفاتورة' +' '+ @countrow + '
' +
+ N'مجموع كميات الفاتورة' + ' ' + @sumQuan + '
'+
N'الضريبة' + ' ' + @TotalTax +'
'
+ N'و رصيدكم الحالي لدينا هو '+' ' + @balanceAgent +'
'
end
if @paymethod = 3 begin
Set @body = N''+
+ '
'+
N'عزيزنا العميل يسعدنا خدمتك و نود إعلامك بانه تم إضافة فاتورة نوع '+@billkind+'
'
+ N'بتاريخ ' +
' ' + convert(nvarchar(max),@billdate)+'
' +
N'بالتفاصيل التالية'+'
' +
N'مجموع صافي الفاتورة' + ' ' +
@invoiceValue + ' ' + @curency + '
'
+ N'مجموع أقلام الفاتورة' +' '+ @countrow + '
' +
+ N'مجموع كميات الفاتورة' + ' ' + @sumQuan + '
'+
N'الضريبة' + ' ' + @TotalTax +'
'
+ N'و رصيدكم الحالي لدينا هو '+' ' + @balanceAgent +'
'
end
DECLARE @xml NVARCHAR(MAX)
DECLARE @body2 NVARCHAR(MAX)
SET @xml = CAST(( SELECT qry101.ItemName AS 'td','',format (qry101.Quantity,'N2') AS 'td',''
,format(qry101.ItemTotalValueRate,'N2') as 'td' , ''
FROM Qry101
where InvoiceGuide = @22guide
order by Quantity
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
SET @body2 ='Your invoice details:
item QTY amount '
SET @body2 = @body2 + @xml +'
'
declare @finalBoday nvarchar (max)
set @finalBoday = @body + @body2
exec Email
@a
,@mail
,@fullSupject
,@finalBoday
end
الآن يمكنك استدعاء الإجراء AutoEmailing لإرسال الإيميلات من داخل برنامج إكسترا كما هو موضح في الفيديو.
لمزيد من المعلومات حول برنامج Xtra وغيره من منتجات شركة EasyBooks لا تترددوا بالتواصل معنا أو مع أحد وكلائنا حول العالم:
Mobile – Whatsapp – Telegram
+17074000211